Opinions are bound to differ so I do appreciate your point. I personally found Cygwin a nightmare to install, a nightmare to maintain, and a crash prone on every system I used it on since XP. While you're right that MinGW is only a subset, it did address the issues I raised with Cygwin which made it a better default environment for me most of the time; falling back to Cygwin on those occasions MinGW couldn't fulfil. But frankly I generally try to avoid Windows where-ever possible so it's possible you have more experience with Cygwin than I.
Regarding "crash prone", it used to be a bit unstable in the early days of XP, but almost all of them were due to failed updates. And that's where you needed to know a bit of magic, the "rebaseall" thing mentioned by barrkel. I haven't had to do that in a long time.
It's a lot more solid that people think it is. I wouldn't run production servers with it (even though I know folks that do...), but for desktop use it's quite robust.
We can argue about whether "nightmare" is overstating the problem but let's be honest that it's easily more than just "a bit annoying". The installer took an hour on one system and the options in those 5-10 pages are far from user friendly. Sure it's stuff I can manage being a seasoned Linux sysadmin but frankly I've found installing ArchLinux (with it's deliberately anti-user approach) easier; never mind your more "mainstream" platforms like CentOS and Debian.
apt-cyg is pretty good though. However that didn't always work. But in fairness to apt-cyg this was about 18 months ago and I believe it was still marked as experimental at that time.
As for crashing, the issues I had last year were with the ssh-agent hanging. The only remedy was killing them from Windows then restarting Cygwin. Killing the process from within Cygwin (ie using `kill`) and then restarting the daemon weirdly left it hanging still. I've not used Cygwin since to see if that issue had been fixed.
Cygwin is one of those products that when it works, it works really well. But when it doesn't it can be hateful. Sadly I've run into a few edge cases that have left me with a sour taste after using it.
For problematic processes, I use kill -W -- that uses the TerminateProcess Win32 API, rather than Cygwin's POSIX implementation. I also use it to kill things like the Windows Update full-screen overlay on Windows 10.
Whups. It's ps -W to find PIDs for Windows processes, and kill -f to use TerminateProcess. Got the two flags confused; you usually use one with the other.