Also a little-understood fact is that the cygwin toolset can be used to build Win32 executables which do *not* require the cygwin1.dll (and therefore are free of GPL requirements, as well as of any performance problems of going through an emulation layer). This is generally accomplished by adding the magic flag "-mno-cygwin" to gcc.
Personally, I've never yet had a need to learn how to install and use the mingw toolset, since the cygwin toolset that I happened to learn first already does everything I need, including producing GPL-free, Win32 executables.