What Is .bash_profile in Linux and Why Does Nobody Quite Explain It Properly

The difference between .bash_profile and .bashrc confuses almost every Linux beginner. Here is what is actually going on