Dev Bloodshed C++ is what I used. Its negatives include needing some slightly different syntaxes for some things IIRC, as well as being hard to transition out of w/o actual programming courses due to it being an inferior compiler for most purposes. It has neither the libraries for most stuff nor have I ever managed to get the projects in it to work properly, introducing of files in ways which makes transferring to a grown-up compiler difficult. If you ever plan on doing any advanced stuff or graduating on to graphics, I would advise against using this one. I wasted countless hours before figuring out the compiler was hopelessly out of date and unable to program DirectX with it. Oh, and the compiler errors are quite cryptic IIRC. The only advantage it has is a much more simple interface and such compared to most others. It is pretty handy when creating small .exe programs which run from the command prompt, due to having less options to monkey with than others, but for most purposes is useless. It should probably be avoided in most cases.
Microsoft Visual C++ Express Edition is free and can work with any modern C++ stuff you want to use; I'm currently using it along with the DirectX SDK to create 3d stuff. So its got the free and good qualifiers. However, I had a hard time figuring out how to use it early on due to being overwhelmingly option-filled. Its got a robust project system, but with that comes the need to understand what you are doing to avoid unexpected things from happening. Once you figure it out, it is pretty good, but that may take quite a bit longer than more spartan compilers. Simple and good are more or less mutually exclusive in my experience. Another advantage is that it is pretty much just a stripped down version of MS Visual Studio, as are the other Visual Express Editions. As such, if you decide to switch over to C#, Basic, ect, the interface and methods of doing things are pretty much the same.
Also, I suggest posting your question/s here:
http://www.bay12forums.com/smf/index.php?topic=57518.0Its essentially an ongoing support thread for programmers, and is frequented by those who know their stuff, gaurrenteeing answers which will likely be more accurate than the ones I give.