When you log in on a text console, or through SSH, you get an interactive login shell.
When you log in graphical mode, you don't get interactive shell, you get a session manager or window manager.
When you start a shell in a terminal in an existing session (screen, X terminal, Emacs terminal buffer, a shell inside another, …), you get an interactive, non-login shell.
When a shell runs a script or a command passed on its command line, it's a non-interactive, non-login shell.
When you log in on a text console, or through SSH, you get an interactive login shell. When you log in graphical mode, you don't get interactive shell, you get a session manager or window manager.
When you start a shell in a terminal in an existing session (screen, X terminal, Emacs terminal buffer, a shell inside another, …), you get an interactive, non-login shell.
When a shell runs a script or a command passed on its command line, it's a non-interactive, non-login shell.