Cygwin is wonderful! And it keeps getting better because there are good developers constantly parrying Microsoft's maneuvers and keeping third-party package updates compiled. I would have an awful time at work without it.
There are three alternatives I've heard of.
MinGW I used only briefly. Second is
UWIN, but my old URL seems to have problems (Ah, I see someone else posted it). And last is Microsoft's own
Windows Services for UNIX, but the link I had for it doesn't work.
Of course, there are lots of unix tools compiled for Windows, like
GnuWin32.