Save a plist like this as
<?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">
<string>if pgrep -x iTunes;then open -jga Some\ Application;open -jga Another\ Application;fi</string>
launchctl load ~/Library/LaunchAgents/some.label.plist.
~/Library/Preferences/com.apple.iTunes.plist seems to be modified every time iTunes is opened. The program will be run every time
~/Library/Preferences/com.apple.iTunes.plist is modified (and there's at least 10 seconds from the last run), but it's probably better than running the program for example every 5 seconds.
For most applications,
open -jg opens the application hidden and without making it frontmost. For some applications like TextEdit, it opens a new visible window if the application is open but has no windows, but you can use
pgrep -x TextEdit||open -jga TextEdit or
lsappinfo launch nofront=true launchandhide=true /Applications/TextEdit.app instead.