Well here's my two peneth.
Your fears over using .NET to write programs then not having customers to sell those programs to, is fairly unfounded. .NET is here to stay, and the .NET framework is included in SP2 I believe, (Not 100% sure because I've had .NET framework installed since the beta!).
Either way as more and more programs are released that use the framework, then there will be less and less Windows OS's out there without the framework installed.
The only real limitation to using .NET is that it is not available for Linux. Although I believe that people are working on an open source alternative, to get .NET programs to run. But from a commercial point of view unless there is a major shift in the OS market, then .NET on Windows OS will be a viable platform for years to come!.
As for the different .NET languages, well it's really down to taste, and what you are comfortable with. I personally use VB.NET which is mainly down to the Visual Studio editor being more friendly when using VB than when using C#.
The main difference with any of the .NET languages is just semantic, as they all use the same underlying Object Oriented structure. And I have yet to find something that I cannot do in VB.NET but can do in C#.
Plus moving from VB.NET to C# or the other way around is fairly painless. The only thing I would say for C# is that it is more semantically (is that a word!) similar to Java than VB is. So if you wish to move toward a JAVA environment at some point then maybe C# is the way to go.
The biggest change from a VB6 to .NET environment is the Object Orientation. Which you will need to understand fully to make the most out of the .NET languages. (VB6 does support OO to a degree, but it is not a full OO language!).
If you are fairly conversant with VB6, which if you are finding limitations then I'd guess you are, then the smallest leap is to VB.NET. If you then wish to retrain to C#, then the impact will be minimal, it is after all just semantics in the visual editor!
There is still a school however, that will always use C++, and I don't mean the .NET version. C++ is undoubtably the most powerful language, and is available on all platforms. However with that power comes great responsibility! :-) only joking, but with the increased power you also have increased complexity, and if you are not used to the C language it can be fairly hard to learn.
If you want to learn about Object Orientation, in a fairly similar environment to what you already know then learn VB.NET. It will give you good grounding for OO principles. Plus the .NET framework will become ubiquitous fairly soon.
Anyway that's my thoughts on the subject, sorry for rambling on a little!