AFAIK, there is no way provided by MS for the end user or for the developer to control on which monitor an app opens. Metro apps open on the last monitor where there the Start screen was, and desktop apps, well it depends on each desktop app whether it remembers its last monitor. The Start screen itself as Jcee said can reliably be opened by the end user on a specific monitor only if Windows' built-in provided way to invoke the Start screen, aka, hot corners are used.
In their infinite wisdom, MS has defined different keyboard shortcuts for Metro apps vs desktop apps. The keyboard shortcuts Win+Page Up/Page Down move Metro apps across monitors. For desktop apps, they are Shift+Win+Left/Right arrow keys to move an app window across monitors. I don't get it why they can't be consistent.
You can specify the primary monitor from Display Control panel. I haven't been able to find any Dock or any other launcher either that always launches a specific app on a specific monitor. It's entirely left to the developer of the app to make it multi-monitor aware instead of the OS giving the control to the user. This open source tool:
http://sourceforge.net/projects/monlaunch/ does it using AutoHotkey (to quickly and automatically move the window) but it isn't 100% reliable for every desktop app because the OS doesn't help in any way.
Edit: Well good news. The latest Classic Shell has a setting to control on which monitor the Start screen opens.