сейчас разъясню...
MinGW -
Minimalistic
GNU for
Windows. то есть самые основные программы GNU (GCC, G++, make, ls, cd
). в-основном используется для компиляции, да.
а вот
Cygwin -
полноценная GNU/*nix - среда для Windows. то есть с ним возможно создать полноценный Unix в Винде (хотя, ИМХО, лучше отдельный поставить
).
а вот O3 - дело тонкое. поосторожней с ним. оптимизация, конечно, вещь отличная, но тут важно не перестараться. иногда бывает полезно, иногда - нет. c O3 программа будет весить побольше и иногда может даже быть медленней, чем с O2. O3 советую использовать, если есть inline-функции.