At work I write code on Linux (Debian 5.0) AND Windows (with keyboard/mouse shared between screens with synergy - I recommend it.) I also write code on Mac OS X at home, which is fairly unix-y.
First: I do not believe your options for programming language choice is more restricted on Linux/OSX. If you want your .NET languages, you can have them. If you want your scripting languages, you can use them (AND you can use them on Windows too, you know.) C/C++ is fine. Java is not hard to install on either. Plenty of languages run on the .NET and JVM, which are available for both platforms.
I do not generally find the tools more restrictive than Windows either. I think that the effort invested in learning to use your command line and the tools it has effectively is very much worth it in the long run. If you are used to the command line (cmd.exe) on windows, know it is essentially the most inferior command line shell on earth. Shells like ZSH have great features that make life easy. I think that doing things the 'unix' way of just having commands and piping them through each other is a good principle and works in practice: some of these individual tools suck, but at least they may only suck at *one* specific thing rather than a multitude of them ;).
Lots of your tools on Linux are free. There are some very very good alternatives to the pay-for development tools on windows, but like all things of this vein, there aren't always good free analogues to the pay-for stuff and vice versa.
To mention some tools on both Windows AND Linux:
* I recommend at the very least having a good Text Editor that you know well, that's available on ANY platform. I naturally suggest you try either Vim or Emacs, because they are available on almost every operating system you could think of using, they're very powerful and free.
* Visual Studio 2008 (I use Team System) is awesome. I totally recommend it if you write code on Windows. I really like it as an IDE, it's very powerful, but it does come with a learning curve. The IntelliSense for C++ is apparently going to rock in VS2010 from what I hear, which will hopefully make working on our ~60kLOC C++ code base easier!
* For compilers: a recent GCC (like, 4.3 or 4.4 if possible,) or MSVC on Windows. MSVC sometimes lets non-standards compliant things slide in my experience and has some slightly annoying warnings, but they're both very good.
* I recommend you *do* learn a scripting language if you choose to use Linux. Even shell script would suffice (for an example, see: MapReduce as a Bash script!) It's useful so you can automate lots of shit you otherwise won't want to do again.
* IF you choose to write lots of C/C++ on Windows and/or Linux (but 'if' because you can probably spend your time better!,) despite what anybody tells you, the APIs have quirks and some apparent corner cases and are weird in some spots. There's also the problem sometimes of API fragmentation and you're not sure what's available where. Some of it just sucks.
For things about my linux system that I write code on at work:
I use Debian 5.0 (kernel 2.6.26 I think), with xmonad as my window manager. Soon I'll be getting a nice lenovo thinkpad x200 though, on which I'm planning on installing ArchLinux (so I have a recent enough kernel to have stable wireless drivers, Debian lags behind in that respect)