Right, this is how I've got applications to launch automatically at login and have them hidden. It looks more complicated than it actually is. It's quite straightforward.
First, if you have them set to start automatically already, go to System Settings / General / Login Items and remove them.
Next, open TextEdit and make sure you're working with a plain text document by pressing shift-cmd-t or clicking Format / Make Plain Text
Then paste the following into the editor.
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>imgurls.LaunchAtLogin</string>
<key>ProgramArguments</key>
<array>
<string>open</string>
<string>-j</string>
<string>/Applications/img.urls.app</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
With this in there, there are two things you need to edit.
In line 6, change this to be a description of the app you want to open hidden, just change the part before .LaunchAtLogin Actually, you only need to change this if you're going to have more than one app because it has to be unique for each one. In this case, I'm opening imgurls (which is an app I call via right click to upload an image to imgur and automatically copy the link to the clipboard).
Line 11 is where you put the path and filename of the application you want to open. In this case, you can see it's in /Applications and the app name is img.urls.app
You need to be careful to get this absolutely exact, including capitalisation and be aware that if you're opening system apps, they may appear to be in /Applications but they're actually not. For example, one of the apps I have opening automatically is Photos and the path for that is <string>/System/Applications/Photos.app</string>. You can check where an app is by opening a terminal and doing an ls -l in /Applications and again in /System/Applications
Once you've got the file tweaked as you want, save it with an extension of .plist and dump it either in ~/Library/LaunchAgents if you only want the app to open for the current user or /Library/LaunchAgents if you want it to open for all users.
Log out, log back in again and you're sorted.