ngIf, ngShow e ngHide: Qual a diferença?

Após ter adquirido uma certa experiência em AngularJS pude notar que algumas práticas levam à uma aplicação baseada em Angular ficarem um tanto lentas. Às vezes simplesmente não paramos para entender o que se passa com os componentes e recursos que usamos no dia a dia. Não conhecer o ngIf do AngularJS e usar sempre ngShow…