.bashrc
defines the shell environment for a specific user. It runs every time bash starts, regardless of what mode it runs in, such as an interactive shell, running from a remote call like ssh user@host cat /etc/hosts
or even a mere shell script.
.bash_profile
is a per-user login profile. It runs once when you login and does things that a user needs when they interact with the system, such as the message of the day or a list of new messages.
/etc/profile is a system-wide login profile script. It also runs once when you login, but runs for all users before their user-specific .bash_profile
For something environmental like a PATH variable, .bashrc or /etc/bash.bashrc is a good place so that you don't have to worry about login or non-login shells.
This page has some details: http://stefaanlippens.net/bashrc_and_others