Cygwin is a popular complete POSIX emulation environment for Windows. Most of its tools can be used with Emacs, and it covers a wide range of ported software. The main shell used by Cygwin is GNU bash, but other shells are also available. Some Cygwin tools may not interoperate well with Emacs or other native Windows tools, due to the total immersion aspect of Cygwin, including its non-native filesystem mapping.
If you choose to use Cygwin, then its tools will probably be all that
you need, but you will need to get image libraries from elsewhere, as
the Cygwin ones are not compatible with non-Cygwin software. In fact,
if Cygwin is on your PATH when you run Emacs, and Emacs does not find
other versions of the image libraries first, then the Cygwin ones can
cause problems. Cygwin developers recommend that you do not put
Cygwin on your system PATH for this reason. Instead you can
make the Cygwin tools available within Emacs by setting
in your init file.
MinGW is a set of development tools that produce native Windows executables, not dependent on Cygwin's POSIX emulation DLLs.
MSYS is a POSIX shell and minimal set of tools that are commonly used in configure scripts. Like Cygwin, this environment uses a non-native filesystem mapping to appear more POSIX like to the scripts that it runs. This is intended to complement the MinGW tools to make it easier to port software to Windows.
UWIN is another POSIX emulation environment, like Cygwin and MSYS, that provides a large number of ported tools. The shell used by UWIN is ksh, the Korn shell.
GnuWin32 provides precompiled native Windows ports of a wide selection of Free software and libraries. Tools available here that are useful for Emacs include:
archive-modeto edit .arc files.
gnusto display XFace headers in messages.
ediffand producing patches
grep-findand other file searches.
archive-modeto edit .lzh files.
compilefor building projects (also in MinGW)
gnusto talk to servers over SSL.
ediff-patch-fileand others to apply patches.
tar-modeto edit tar files.
archive-modefor extracting zip files.
archive-modefor editing zip files.
GTK is a potential source for some of the image libraries that Emacs requires. GTK is installed along with other ports of GUI software, such as the GIMP image editor, and Pidgin instant messenger client. If GTK is installed when you run addpm, Emacs will use the image libraries that it provides, even if they are not on the PATH. GTK ships with JPEG, PNG and TIFF support.
Man pages for Emacs and other ported programs that you have can be
read using Emacs' built-in manual reader
requires no external programs, but if you do have a port of
man, there is also an Emacs wrapper
which may be slightly faster.