init is the primary process that is the parent to all other processes. It starts at boot and checks out your /etc/inittab and a bunch of other settings. It also has the notion of the runlevel and knows, from your /etc/init.d settings for instance, which processes to start/stop when you switch between runlevels.
telinit is a smaller tool that informs init when it needs to switch runlevels. So you can use "telinit" to "tell init" that it needs to switch runlevel.
A quick example:
when you boot into graphical mode (runlevel 5), init will start and launch all programs associated for runlevel 5 (itself being the parent process of all those). When you then ask to shutdown the machine, telinit will inform the -still running- init process that it needs to switch to runlevel 6 (for reboot) or 0 (for system halt).
See "man init" for details on runlevels.