Dipende da cosa vuoi. Cygwin cerca di emulare l'intero sistema unix/linux su Windows nel modo più accurato possibile, inclusa la struttura delle directory, le funzioni, le librerie ecc.
Mingw/Msys è più leggero e cerca di usare funzioni, librerie e convenzioni native di Windows dove possibile.
Così in un certo senso Cygwin è più facile e più naturale da usare per qualcuno più familiare con l'ambiente Unix, mentre Mingw/Msys funzionerà più naturalmente per qualcuno più familiare con Windows.
Nota: sia Cygwin che Mingw sono interi sottosistemi di sviluppo, non solo la shell bash. Sono stati sviluppati con lo scopo di scrivere e portare programmi unix-like su Windows.
C'è anche il progetto gnuwin32 che fornisce molte utilità gnu per Windows (inclusa una shell). Ci sono anche vari port di windows bash (usa google), alcuni dei quali sono eseguibili in un solo file e non dipendono da librerie esterne, ma hanno funzionalità più limitate.
La migliore shell è quella che ti sentirai più a tuo agio ad usare.