I always had confusion about login vs non-login shell and today decided to clear this up. Here is what I have understood. Please refer to the following site for more explanation.
When a user starts The shell program
/bin/bash (hereafter referred to as just "the shell"), shell uses a sequence of startup files to create an environment for the user.