Depending on your Linux distro and release, ultimately sysvinit scripts (those scripts in /etc/init.d/) are generally run from the symlinks which exist in /etc/rc[0-6S].d, by /etc/init.d/rc.
Under Ubuntu, you're either using old-style sysvinit, or more recently, upstart. Under the upstart management directory (/etc/events.d/) you'll find a legacy mode that falls back to the /etc/init.d/rc invocation. Otherwise, /etc/init.d/rc is invoked for each runlevel via /etc/inittab.
If you examine the logic of /etc/init.d/rc, you'll find it defines actions depending on runlevel (0 & S are unconditionally stopped) or script prefix (S[0-9][0-9]* scripts start, K[0-9][0-9]* (kill) scripts stop). The numbering of scripts within a runlevel directory (e.g.: /etc/rc1.d/) determines the order in which scripts are stopped or started. Kill scripts are run first, then start scripts.
For more on this, research sysvinit and upstart.