Grunt est pas vraiment un outil de compilation. Grunt est un outil avec toutes sortes d'addons utilisés pour minimiser html, pour améliorer les scripts, pour déplacer des éléments de votre dossier de développement vers votre dossier dist, lancer un serveur local (ce qui est très pratique avec live-reload), regarder les modifications , ...
Bower est un outil de construction qui aide à organiser vos dépendances frontales. Vous installez le matériel via bower (avec la ligne de commande node.js) et l'enregistrez dans votre application. De cette façon, vous pouvez facilement gérer vos dépendances et la seule chose dont vous devez tenir compte est (théoriquement) votre fichier bower. Si vous le poussez vers Git quelqu'un d'autre peut facilement installer toutes les depdencies nécessaires, en fonction de votre fichier bower.
Tous ces outils ne sont là que pour la gestion de projet, les dépendances et les tâches ennuyeuses qui prennent beaucoup de temps.
edit: si vous avez des questions au sujet d'un outil spécifique, modifier votre question;)
outils de construction font beaucoup de choses compiler le code source en plus. – Pointy