Working with AngularJS has made things very easy for front-end developers. We can handle almost everything with Controllers. Sometimes we needed to work with more than one controllers and we need to communicate between those controllers. It would be easy to communicate between controllers if they are in parent-child relation.
Main difference between ngIf & ngShow/ngHide is ngIf will not render the DOM element and ngShow/ngHide will show/hide the DOM element. It is very important to learn basic fundamentals of the framework.