1) Agent is primarily responsible for launching and updating the games, so a broken agent leads to a couple of problems. The launcher application launches agent which will go about updating the BNet launcher if needed. If agent requires an update the launcher will update Agent before it finishes opening.
2) I believe bundled with the steam updates is a process called SteamUpdater.exe which is launched either by pressing restart when steam bugs you for an update, or launched when steam opens after an update. The updater handles restarting the steam client as necessary.
Since Blizzard changed their update process when WoW came out here is what they did both before, and up until the BNet launcher came about:
Back in the Diablo 1 and SC1 days Blizzard had a program that would handle swapping out exes and what not. Since the exe's were stored inside the MPQ's all that was needed was to extract the file. This replaced the old one with the new one. Due to their archives having priority/chaining, all you needed was a new patch archive and the exe in order to continue playing the game. Users still had to manually press update as nothing was really automatic about it like it is now.
Something similar to this is still perfectly viable as the updater would be able to update everything but itself. How was the updater updated then? It was just replaced on the server and required a specific version number for the game exe in order to run. This also prevented patching your game multiple times, or patching to an earlier version.
For WoW they used a similiar two part process - they used a custom bittorrent downloader (see this for some more background information on that) which downloaded the data. This allowed them to leverage off users who already downloaded their game to save their own bandwidth. Each patch came with the downloader and upgrader application, with the upgrader being newer versions of their upgrade app they had been using over the years. Before this SC1, D1, and D2 all handled downloading the newest patch data themselves then running the updater.
With that said the DLL approach is definitely the easiest, but if that wouldn't work with your game exe just use the separate programs.
Using the launcher to download and run an updater program will work. Just beam over your game version to get the correct patches If the launcher needs updating just make the updater end the launcher, or exit the launcher right after you start the updater. Hope that helps!