.NET is more then the sum of it's parts, so listing some parts here will only give you a minimal outlook on what to expect.

.NET is a framework of classes to handle programming.

This framework is available to ALL languages that use .NET.
This means I have the very same objects programming in C++.NET, VB.NET or Cobol.NET.

.NET languages are compiled to MSIL ( Intermediate code ) which in turn is compiled by a just-in-time compiler when started on the target platform. Note that both steps are compiling. No interpretation here. As target platform, Windows exists, Linux will be available in the future through an open source project called Mono. Microsoft does not plan to extend it to other platforms, but the .NET framework and languages are standars, so anyone developing can give it a try.

With .NET you have policies. Policies can restrict your code in a way that Java applets try today. Today, you have the choice between no rights ( Java applets ) or all rights ( ActiveX elements ). With .NET you can give rights as you choose. You want internet files only access one of your printers and only drive D: in readonly mode ? Sure, no problem.

.NET comes with a new language, C#. C# and VB.NET are really good at RAD. With a feel like Borland, but all internal advantages Borland misses ( like full Unicode support ), .NET made a great leap from C++ with MFC to something as fast in execution but super-easy in developing.

Finally, if you don't like one element of a .NET language, you can always choose another language. You can compile all of them into one project. Theoretically, you can do this now, but everyone who did it knows it's a pain in the ass to work around all the limitations. This is time that could as well be spent coding something useful. So in .NET, you can have a VB.NET class in your project. Add a C# file and create a class that uses the VB-class as a baseclass. Create a C++ class that uses the C# class as baseclass. You can now use this class in any language you choose to it's full extend. Without worrying about calling conventions, datatypes, registering dlls or something like that.
Obviously, you can do this in any order, not just the one given above.

There is so much more to .NET than what I can get into this little post. Go and decide for yourself. I will use it for sure.