.NET 2.0 was just .NET 2.0, but later on MS split .NET into the .NET client profile and .NET full profile.

The problem there is that if you used some methods in .NET 2.0, they might not be in the client profile, and may require the full profile, making them no longer forward compatible for practical purposes for users who don't know the difference.

.NET 4.0 won't run on XP, but, sigh... something has to be sacrificed somewhere...

I come from a background in C/++ with STL/ Win32 and MFC, and when I was told to learn C#, it seemed yuck. But I had to learn it , while at work, and now I find that C# can do stuff quicker than C++. And more over, C# is better supported by Microsoft in terms of usage with its future products, Offfice Development being an excellent example. Not that Office Development cant be done in C++, but C# makes it much easier to . So learning C# is advantageous . I cant comment on Java, as I have never worked on that , but .NET has its Java counterparts.

But Python should be a must on your list, it is easy and very powerful . I started with Python, and found it easy to pick up . Python has C# and C++ bindings and though I am not an expert in Python, but I see there is lots of potential in it.