You might also check out UnxUtils (http://unxutils.sourceforge.net/
). The UnxUtils package gas many of the same GNU command line utilties compiled directly to the Win32 API instead of to the cygwin posix API DLL.
The advantages are:
1) you don't need to have the cygwin.dll somewhere on the path (admittedly, this is a pretty minor item)
2) the cygwin API has differences in how drives & paths are specfied on the command line (at least it did years ago when I last tried the Cygwin tools), so you have to learn to use /c/somedir/myfile.txt (or something similar) instead of c:\somedir\myfile.txt. The cygwin method is much more natural for Unix die-hards, while the UnxUtils syntax is more natural for someone like me who's more used to Windows.
The disadvantages are:
1) the UnxUtils package is not as continuously maintained as cygwin and the utilities provided are somewhat older than you'll find in a current cygwin package. The UnxUtils package has not been updated in a long while (since 2003), but then again, how often does 'grep' need updating?