I am just learning it now, in my current job.
It's the Microsoft 'java killer', which means that it won't be killing anything.
It's just a way of creating a portable application platform, modelled on the Java initiative.
Unlike Java, it is not language centric. All the standard programming languages can run on it, and call modules written in other languages. Microsoft directly supports (at least), C# (a Microsoft response to Java), C++ (managed and unmanaged) and Basic. Because the languages are all compiled down to run on the same VM using the .Net intermediate language, many other programming languages are supported.
Managed code is that which is guaranteed to be memory safe, (that is, no pointers). C++ can be programmed in managed mode, or unmanaged mode. If you use unmanaged mode, you are responsible for looking after memory.
If you use managed mode, memory garbage collection is done for you automatically.
Microsoft, of course, only supports Windows with it's products, but the specification for .Net is open, so there is an open source project called Mono to replicate the .Net 'runtime', or framework, which is called Mono. I do not know how complete the implementation is, but it is apparently planning to replicate the lot, eventually.
The Visual Studio offers a very comprehensive set of advanced objects for .Net programmers. Eg, the Dataset is a memory resident set of tables. These can be passed as parameters to object methods. The tables can be saved to disk as XML, and read back, using one method call.
The columns in these tables are first class objects. That is, when you create a table definition, Visual Studio will then create code that defines the columns as table properties. Autocomplete will then fill in the table column names. One of the big frustrations I had with programming before was reading in a table, then having to put in a quoted string to refer to the table columns. Thank Ed those days are gone.
It also has other goodies, such as built in encryption objects.
It has 'remoting', which lets programs talk to each other using HTTP or TCP, on the same computer, or anything they can connect to.
You can build Web applications using it. There is a comprehensive set of web objects to display tables, or anything else you want.
C#, which is what I am using to program with, is a nice 'Java+'. Although C# and Java are in a competitive race to outdo each other with advanced programming features. For example, they both allow iteration over a set of entries in a table without having to use the error prone drudgery of a 'for' loop with index variables. They now both support 'generics', so you can write an algorithm that will work with any data type (that makes sense for that data type).