.NET is a whole bunch of things wrapped up into a big bundle. At it’s core, .NET is an interpreted language called MSIL that is compiled at runtime and run on a virtual machine much like java.
On top of MSIL, .NET languages can be implemented. Currently, C#, J# (.NET Java), Visual Basic.NET, C++.NET, Perl.NET, Fortran.NET and a couple of other languages can be compiled into MSIL. Since all of these compile into the same IL, functions from one language can be called seamlessly from another.
The third part of .NET is the .NET framework which is a common set of libraries that form the basic building blocks of a .NET application. These span from basic things like lists to more advanced things like windows forms which can be used to build GUI apps. Even though .NET calls MFC code in the background, your usually never exposed to it since it’s all wrapped up in the .NET framework.
What exactly do you want to build? Your generic int main(void) applications that are purely command line will behave pretty much exactly the same in both platforms. If you want to build multi-threaded, command line apps, then Windows is POSIX compliant so as long as you use the generic POSIX calls, it should be reasonable easy to translate. If you want to build GUI apps, then you’ll have to learn about the windowing system and event-based programming just as if you would for a linux GUI system, except under a different paradigm.
If you want to interface with pre-.NET code such as DirectX or COM libraries, then you’ll probably need to be familiar with reading MFC code if not writing it.