I wrote these rules out while debugging a crash in another MS product:
I won't name the app, but it violated all 4 rules.
Known consequences of violating these rules:
Mostly right - you'll also want to make sure that first thread is the last one to call MAPIUninitialize.
In that case - yeah - Outlook's thread 0 would be handling the initial init/uninit as well as the message pump.