Im doing a similar sort of thing, but making it cross platform compatible. As for C being better for socket programming, better than what ?cornflakes lol. I myself will be using C++ as you can think of sockets as objects and my final application will be mutilthreaded; I believe C++ would be far better for this sort of thing as its much easier to use encapsultation and inheritance for different os's etc. (you could use java , but the reason for my networking etc is for a opengl game). As for wether to use windows or linux, i dont see much difference. Yes there are different library calls etc but this is not something which should put you off from using one OS or the other.
I myself prefer Visual studio to anything linux can offer and for programming, this includes programming threads in windows using POSIX pthreads theres a nice library for this. http://sourceware.org/pthreads-win32/announcement.html