Cela dépend de ce que vous voulez. Cygwin cherche à émuler l'ensemble du système unix/linux sur Windows aussi précisément que possible, y compris la structure des répertoires, les fonctions, les bibliothèques, etc.
Mingw/Msys est plus léger et cherche à utiliser les fonctions, les bibliothèques et les conventions natives de Windows lorsque cela est possible.
Donc, d'une certaine manière, Cygwin est plus facile et plus naturel à utiliser pour quelqu'un de plus familier avec l'environnement Unix, tandis que Mingw/Msys fonctionnera plus naturellement pour quelqu'un de plus familier avec Windows.
Note : Cygwin et Mingw sont tous deux des sous-systèmes de développement entiers, pas seulement le shell bash. Ils ont été développés dans le but d'écrire et de porter des programmes de type Unix sur Windows.
Il y a aussi le projet gnuwin32 qui fournit de nombreux utilitaires gnu pour windows (dont un shell). Il existe également divers ports bash pour windows (utilisez google), dont certains sont des exécutables à fichier unique et ne dépendent d'aucune bibliothèque externe, mais ont des fonctionnalités plus limitées.
Le meilleur shell est celui que vous'sentirez le plus à l'aise d'utiliser.
.