Note that Upstart in 12.04 still continues to Support SystemV jobs, but you are encouraged to write new services using Upstart since it's a lot better! :-)
Here is some information on how to start creating a new Upstart job:
Regarding services that are defined in both SysV and upstart, generally if you restart it through SysV you'll see something like this:
al@al-mythtv:~$ sudo /etc/init.d/mysql restart
[sudo] password for al:
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql restart
Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the stop(8) and then start(8) utilities,
e.g. stop mysql ; start mysql. The restart(8) utility is also available.
mysql stop/waiting
mysql start/running, process 29846
What I take this to mean is that Upstart is preferred for these services, and the SysV implementation is just a wrapper.
Also, I think you have the meaning of the directories backwards. /etc/init is upstart configuration, /etc/init.d is the SysV compatibility, but it is just symlinks to upstart for these type of services.
Best Answer
Upstart has been available in Ubuntu since Edgy (6.10). Full details are available in the manual pages on your system:
However, for a gentler and less terse introduction, please see the Upstart Cookbook:
Note that Upstart in 12.04 still continues to Support SystemV jobs, but you are encouraged to write new services using Upstart since it's a lot better! :-)
Here is some information on how to start creating a new Upstart job:
http://upstart.ubuntu.com/cookbook/#precepts-for-creating-a-job-configuration-file
I would also highly recommend looking at the existing jobs in /etc/init/ to see how they work (some are disected in detail in the Upstart Cookbook).