From my experience, Cygwin can pretty easily be tuned to the state of fitting almost all the needs of an average developer looking for a *nix env at Win platform. The problems start appearing when you need to somehow integrate Win apps with Cygwin apps. For example, the idea to run Cygwin's ruby|python|php|gcc|whatever directly from Sublime Text can take a lot of figuring it out on how to do it.
cmd.exe in its turn lacks a portion of basic functionality, like tabs, for example. A 3rd party apps, like Console, can help solve this problem, but in its turn, they have their own issues. Console, for example can have noticeable delays when rendering output.