David explains it much better than I could, so here's what he said about the script:
This script is a workaround for the issue of applications hanging or causing the system to hang when multiple applications are specified as login items in System Preferences > Login panel.A simple, effective solution to the problem, at least until its officially addressed by Apple.
The workaround is accomplished by specifying the script as the sole login item. When the script runs it opens any aliases it finds in a "Login Items" folder of its own, which resides in the same folder as the script. The script waits five seconds between opening each alias, which avoids the bug that is causing problems when multiple apps are launched at once. If you want an application to be hidden after it is launched, simply do a Get Info on its alias in the script's "Login Items" folder and enter the word "hide" in the comment field.
Read the rest of the article for David's script...
property pPathToLoginItemsFolder : "" -- The script will set this value.As explained above, just save the script into a folder, create a new Login Items folder in that same folder, and then place aliases to your startup apps in the Login Items folder. Add the script as the only app to be run at login, and you should have a viable multiple login items launch solution.
set loginItemsList to {} -- The script will set this value.
set interLaunchDelay to 5 -- Seconds between launching applications. Feel free to fiddle with this one.
tell application "Finder"
set pPathToLoginItemsFolder to ((container of (path to me) as alias) as text) & "Login Items:"
set loginItemsList to every item of folder pPathToLoginItemsFolder whose kind is "Alias"
repeat with i in loginItemsList
open i
delay interLaunchDelay
if (comment of i is "hide") then
set visible of process ((displayed name of i) as text) to false
end if
end repeat
end tell

