The .NET framework is a set of libraries that Microsoft provides for developers. It's similar to the Java libraries in that it essentially requires a host environment to be installed before you can use applications written with it (e.g. you need to have .NET framework installed to run .NET apps ~ you need JVM to run Java apps).
As to compilers, try them each out and decide which you like better. Or if you're comfortable with your first pick, just use that. Everyone'll have their own preference. I prefer VC++ (I have the full version though), but I've not even tried the others. ;)
dont use VC++ Express. By default it can only make .NET apps, not proper win32 apps. To make "classic" c++ apps you need to install and configure it to use somethig called the platform SDK which is a pain in the ass