Basically all IPC in Android is done via "Intents". The idea is that messages are sent through a middleware layer that's part of the OS and those messages are sent to every application that's registered to receive them. (It's more complicated than that, but that's the general idea.) The OS itself will send out Intents, and there are Intents for such events as Startup. So those programs probably registered themselves to receive startup Intents.

Generally speaking, you really don't need to worry about background applications. The general rule is that, while they are technically "running" and consuming memory, they're not really active. (There are exceptions, of course.) If the OS finds that it needs more memory, it will kill off inactive processes. Generally, letting the OS deal with this stuff works much better than trying to micromanage it. Sadly, the few places where you really do want to take over (for example, an application that wants to always be running that you never use and cannot uninstall — I'm looking at you, Amazon MP3), trying to do so is actually going to cause more problems than letting it waste your memory as it continually stops and restarts, instead of just wasting a small amount of memory.
_________________________
Bitt Faulk