Factsheet
Videos
I stopped using http://mingw.org/ ages ago as it was getting behind on newer Windows API additions and newer gcc versions.
Instead I really recommend MinGW-w64, which supports both Windows 32-bit and 64-bit.
If you want to keep your old MinGW on your system and would like to give MinGW-w64 a try without interfering with your installed version, you can download a standalone build from http://winlibs.com/ that you just need to download and extract.
If you use MSYS shell you should also switch to the newer MSYS2, which is a lot faster.
I guess they've stopped paying for this domain.
The good news is that MinGW is still available on MinGW - Minimalist GNU for Windows download | SourceForge.net. Note that the maintainer announced on the homepage:
This project is in the process of moving to osdn.net/projects/mingw, you can continue to follow us there.
So you may need to go to MinGW - Minimalist GNU for Windows Project Top Page - OSDN.
MinGW is a complete GCC toolchain (including half a dozen frontends, such as C, C++, Ada, Go, and whatnot) for the Windows platform which compiles for and links to the Windows OS component C Runtime Library in msvcrt.dll. Rather it tries to be minimal (hence the name).
This means, unlike Cygwin, MinGW does not attempt to offer a complete POSIX layer on top of Windows, but on the other hand it does not require you to link with a special compatibility library.
It therefore also does not have any GPL-license implications for the programs you write (notable exception: profiling libraries, but you will not normally distribute those so that does not matter).
The newer MinGW-w64 comes with a roughly 99% complete Windows API binding (excluding ATL and such) including x64 support and experimental ARM implementations. You may occasionally find some exotic constant undefined, but for what 99% of the people use 99% of the time, it just works perfectly well.
You can also use the bigger part of what's in POSIX, as long as it is implemented in some form under Windows. The one major POSIX thing that does not work with MinGW is fork, simply because there is no such thing under Windows (Cygwin goes through a lot of pain to implement it).
There are a few other minor things, but all in all, most things kind of work anyway.
So, in a very very simplified sentence: MinGW(-w64) is a "no-frills compiler thingie" that lets you write native binary executables for Windows, not only in C and C++, but also other languages.
To compile C program you need a C implementation for your specific computer.
C implementations consist, basically, of a compiler (its preprocesser and headers) and a library (the ready-made executable code).
On a computer with Windows installed, the library that contains most ready-made executable code is not compatible with gcc compiler ... so to use this compiler in Windows you need a different library: that's where MinGW enters. MinGW provides, among other things, the library(ies) needed for making a C implementation together with gcc.
The Windows library and MSVC together make a different implementation.
