A well set up linux/BSD box outperforms a well set up windows box. A poorly set up windows box out performs (IMHO) a poorly set up linux/bsd box. Windows gets a bad rap because of all the clowns running it as a desktop. A well set up W2K/W2K3 server is a pretty solid beast.
At slashdot.org a while ago, they had some survey that showed that there were more breakins on unix servers than on windows servers. You can argue with the methodology of the survey, but a lot of people with experience with both types of servers tend to more or less agree. My personal experience (25+ years unix, almost almost 15 with windows) bears out that observation. Also, if someone cracks one of my windows servers (which hasn't happened in 3/4 years), It takes from a hour to a day to recover. Someone cracks one of my unix servers, and I'm in deep sh*t - the quality of the blackhat hacker is better.
.NET is pretty fast, and real stable. It's a good dev platform. A lot of corporations went with vb.net as a vehichle for moving their vb developers forward. But vb.net is more than vb on steroids. I'ts a full oo development environment with it's own methods, practices, and design models. A lot of former vb people approaced it like "this must be the same as x in vb". for the most part, they were wrong and just wound up repeating their past bad vb on a more expensive platform.
Compared to linear or waterfall development, .net is a mindset change to how you visualize, approach, develop, and test a project. IMHO, C# leads you to an understanding of the .net platform faster than vb does. YMMV.
C/C++ cgi programs are quite fast up to a point. There are often threading issues that prevent them from being scalable beyond a certain point. C++ does better than C for threading Large/Very Large Scale apps. Some of that depends on how your network, web server, OS or kernal is tuned. What's extremely fast for 500 concurrent users, breaks down for 1000. .Net does a good job with scalability from what I've seen. The platform lends itself to dispersing an app across many boxes easier than a cgi based solution.
Don't think you'd be disappointed with .net C#. If you get a handle on the platform before you get into design, the inherent methods of the platform will lead you to encapsulate the algorithmic pieces into something that you could swap for other programs, on other platforms if the need arises.