The Mac OS already provides for each user a way to start application at login time in Login items found in the Accounts system preference. This solution works fine if you have the right application which do what you need.
For developers there is another way to customize login and logout process by using loginwindow hooks. You can read about this here. Be careful, this solution needs to create shell scripts running as root without user interaction.
Login Logout Tasks (LLT) provides for each user a free and simply way to customize his session without programming. I share my Macs with my family and with LLT I can do easily some administrator tasks. To do that you have just to copy the Library/Preferences/Login Logout Tasks.plist file in each equivalent user folder and set the automatic start of LLT in Login items of Accounts system preference.