What's the difference between using a LaunchAgent and checking "Open at Login" in Dock? And how do I access the latter programmatically?
Functionally launch agents have more options. They use the launchd process to run them. "Open at Login" basically adds the application to the users startup items. Adding something to a user's startup items requires applescript code. You can google for that as that's how I found it when I needed it.