As for the total ordering and what you should use each for...
- OnClientConnect - Use this if you want to prevent clients from connecting. Note: You do not have a client's SteamID or admin status at this point, so it is of limited use. If you absolutely need to block clients from connecting based on their SteamID, see the Connect (TF2) and CBaseServer (everything else) extensions and their OnClientPreConnect forward.
- OnClientConnected - Use this if you just want to know when a client connects. Useful for resetting data for a client index, such as in an array.
- OnClientAuthorized - Use this if you want to track clients by Steam ID. Don't use this for anything admin related. May occur before or after OnClientPutInServer
- OnClientPutInServer - Use this if you want to track when a client is able to actually play the game. May occur before or after OnClientAuthorized
- OnClientPreAdminCheck - Use this if you want to override admin checks for a client. If you block a standard admin check here, you must call NotifyPostAdminCheck or plugins that rely on OnClientPostAdminCheck will break.
- OnClientPostAdminFilter - Use this if you want to change admin permissions for connecting users.
- OnClientPostAdminCheck - Use this if you just want to check if a person is an admin. It's also recommended you use this instead of OnClientAuthorized for SteamID related functions.
Note that these are called on every map change as well.