From my understanding some versions of Linux require some major command line skills. But it does give the user more control as well. Unlike Windows which only lets you do what the folks at MS have determined.
The reason that Linux distros might require those skills has less to do with it being required and more to do with it being simpler to instruct for. Also because it's generally the first component of setting up a system (as the kernel, userland, and the Terminal used to interface with them are the actual core of the system, and the display stuff merely sits on top of it). The most popular distros - Ubuntu, Fedora, etc. - don't generally require Terminal usage, as opposed to distros targeted to power users, like Slackware, Gentoo, or Arch.
Windows' user limitations are primarily centered on the source code of the OS itself. Beyond that, the user has as much control as they want to take for themselves. I mention this because the average Linux user is in exactly the same boat - they just work with what they're given, and don't dive into the guts of the OS and tweak or change things (and for that matter, I'd even say most expert users and programmers that develop on Linux don't either - just because you
can do something, doesn't mean you
will do it). The biggest fundamental difference there is simply that for Linux, the option for them to learn how to do so and take the initiative to work on the core components is there, whereas with Windows it's not (unless you get a job working in a Microsoft dev team). Although, the NT platform itself is being reverse-engineered by the ReactOS and Wine projects, who have no connection to MS.
As far as programming goes, I've heard of both languages (among hordes of others), and I'm certain there's a few different types of BASIC. First I'd like to know how things actually function, which was one of the reasons why I thought DOS would be something to consider, due to having to configure everything.
Knowing how to operate command line utilities doesn't really have anything to do with programming (except for writing shell/batch scripts, but that's not the kind of programming language that most software is composed of). If you're going about this using gcc as your compiler, then you probably will need to use the command line to operate the process of making the source code into a usable program, and this is also somewhat true of other scripting languages like Python or Perl - you're most likely to use said scripts from the Terminal rather than them being a graphical application (although it is possible to make graphical applications with Python - Meld, for instance, or games using the Ren'Py engine).