> a. MinGW transplant GCC to windows?
More accurately, MinGW provides an implementation of GCC on Woe32.
> and it creates windows executables,
> not GNU/Linux's, right?
No, to run them on GNU/Linux, you either need to recompile with a
native GNU/Linux hosted GCC, or run them under an emulator, such
> b. MinGW can't compile GNU/Linux programs, right?
Depends on what you mean. It may be able to compile GNU/Linux program
sources to Woe32 binaries, with minimal or even no modification. Of
course, those binaries must then be run on a Woe32 host; see (a).
> c. MinGW is different from cygwin?
> which simulates a Unix in Windows
No, Cygwin emulates the API expected of POSIX programs, mapping the
appropriate POSIX API functions to Woe32 API equivalents, such that
POSIX programs may be ported to Woe32 with minimal modification.
> and creates only Unix programs, right?
Wrong. Cygwin creates Woe32 programs, usually from original POSIX
sources. Those programs then depend on the cygwin-1.dll emulation
layer, which provides the `glue' between the emulated POSIX API and
the underlying Woe32 API.
MinGW eliminates this emulation layer, producing native Woe32 code,
dependent on the native MSVCRT runtime and native Woe32 API. The
cost of this is measured in terms of (typically) more extensive
modification of original POSIX sources, if they are to be ported.
This obviously would not be an issue, if you are developing new
applications, and are either targetting Woe32 exclusively, or you
take care to design for portability from the outset.