System-wide configuration file used by all users. It is owned by root though, so you need to be an admin user and use sudo to modify it.
This file is read as one of the first configuration files by every shell of every user. Note that it is not a shell script. It is just a configuration file that gets parsed somehow and that may only contain environment variable assignments!
One of your own user’s personal shell initialization scripts. Every user has one and can edit their file without affecting others.
This initialization script is read only by the shells of the user to which it belongs provided that ~/.bash_profile and ~/.bash_login do not exist.
/etc/profile and /etc/profile.d/*.sh
Global initialization scripts that are equivalent to ~/.profile for each user.
The global scripts get executed before the user-specific scripts though; and the main /etc/profile executes all the *.sh scripts in /etc/profile.d/ just before it exits.