As far as developement Linux is pretty much king.
The GNU programming tools and friends of the quality that comes with Linux would of cost thousands of dollars on any other platform.
You get a world class C/C++ compiler in the GCC program for example. It's probably the most used compiler for anything. It's used to build and compile the Linux kernel and system. It's used in other OSes like OS X.
Everything in Linux (exept the top level X desktop enviroments) are geared towards getting work done. There is a reason why Linux got the reputation of a OS built by Hackers for Hackers.
Even the command line enviroment (BASH shell) is a fairly powerfull programming language. And it is easy to use it.
For example you have two programs(actually called "tools").
du --this shows the size of files in a directory
Drag / >: du -h /
du: cannot read directory `/lost+found': Permission denied
4.0K /var/lib/apt/lists/partial
11M /var/lib/apt/lists
11M /var/lib/apt........ etc etc.
grep --this searches thru lines in a file for a kerword and displays that line that contains it.
Drag ~/Desktop >: grep title forums.source.html
<title>AnandTech Forums - What Can I Do With Linux ? more details in the Question</title>
.fttodaymenutitlebar {background-color:449fc8;}
<td class="ftmenusurroundtd"><table border="0" cellpadding="2" cellspacing="0"><tr><td class="ftmenutd" id="menuopt3" onmouseover="changestyleov..... etc etc..
Well you combine them together as such in one line:
Drag / >: du -a 2> /dev/null |grep quake
4 ./var/lib/gnome/Debian/Games/quake3.desktop
0 ./usr/share/man/man1/quakestat.1.gz
8 ./usr/share/vim/vim62/syntax/quake.vim
108 ./usr/bin/quakestat
4 ./usr/lib/menu/quake3-smp
4 ./usr/lib/menu/quake3
0 ./usr/local/bin/quake3
0 ./usr/local/bin/quake3-smp
4 ./usr/local/games/quake3/quake3
4 ./usr/local/games/quake3/quake3-smp... etc etc.
makes a swell search program. By adding > file.name to the end will redirect the output into a text file that I can save for future use.
What most people recommend is that you learn to program a shell till your comfortable with it. Then move onto one of the high level programming languages such as Python or Perl. Then onto lower level programming languages like C or C++.
It all depends on what your comfortable with.
Linux can be very frustrating. The best thing IMO if your serious about learning it is just to dive right into it whole-hog. Use gui minimally and just play with your OS. Experiment with it, destroy it. Blow stuff up. Learn vi or learn Emacs. Becoming a expert in a good text editor will make you 10x more productive. I recommend installing vim and then running the vimtutor. Windows is familar and easy because you've been training yourself to use it over a ten year time or so that you've been using it. Being frustrated wasn't a issue because Windows was the only thing you COULD use. After 2 years or so of using Linux as your main OS you'll look like a uber-hacker to your windows-only friends.
If you don't know how to type by touch then find some type teaching games like children play. I started off being a horrible typer and after a few minutes every day for a couple weeks playing type teaching games I became confortable enough to begin to use VI effectively.
Very usefull for programming from books. Before I had to look at the book, look at the keyboard, look at the screen, look at the book, look at the keyboard, look at screen, backspace backspace backspace... etc etc. Very painfull, gave me a headache and was very slow. Now i am decent enough so that I can look at the book and then glance at the screen every once of a while while copying stuff. Much nicer.
Now this you can do in Windows too. You have scripting languages, gcc works in it, python works in it. You have tools like visual basic etc etc. So it's not like it's a god-OS or anything, but IMO it's superior. Linux can do anything and everything that w2k/XP/w2k3 can do(exept playing some games). Sometimes it's easier to do stuff, sometimes is harder. Sometimes it's faster, sometimes it's slower.
However Windows can't do everything Linux can do. Since it's flexible and made up of small independant parts it's much more flexible and is more limited by the hardware and imagination of the user then by limitations of the scope of the original developer. Did the author of "DU" know that I was going to use it as a search utility to find files in computer? Did he have to know, or even care? Maybe for the first one, no on the second. But it works great non the less. The sum of Linux is more then just it's parts.