session_start() is meant to be used on any page that will in some way access a $SESSION variable, whether that means reading the information in it, setting information, unsetting the variable, etc... . When I use it, I always place session_start() at the very top of my page, just so I keep all of my pages somewhat standardized and organized. If the page does not contain session_start(), then you're not going to have access to the $SESSION variables. In other words, if you have a login page but no session_start() on other pages, then unless you have some other security measure in place, anyone can directly go to that page even if they're not logged in. Depending what you're making, you may not want this. For example:
// redirect to log-in
The above checks whether the $_SESSION variable for the user name is set, meaning the person is logged in. If it's not set, then either the user isn't logged in or there was an error setting the variable. Having this on your home page depends on exactly how you want your home page to behave and whether the content should change based on the user who is logged in.
Note that if you're using $SESSION variables, you can still use $GET and $POST variables, they will not conflict with each other. To avoid confusion, try to make sure that none of your $SESSION variables use the same index names as your $POST variables (i.e. so you don't have $POST['test'], $SESSION['test'] and $GET['test']).