Thanks Korp, happy to help!
So at a more technical level, to create a Dyanmics plug-in would one use some special Visual Studio project template? (I'm just downloading the SDK as I write this).
AFK: You don't need a special template, but you need to reference the CRM SDK and your plugin class file needs to implement IPlugin. CRM will recognize it as a valid plugin and you can reference it later in your configuration.
Once the plug-in was coded/built can it be tested to any degree locally - on the developer's machine?
AFK: To be honest, it's a real pain to troubleshoot plugins running in CRM. I try to test my logic as much as possible in a test application and then troubleshoot as needed once its deployed to the CRM server.
Assuming the output of the build was an assembly DLL, would one just be able to upload that or must it be packaged as a ZIP (which you mentioned)?
AFK: If you're developing plugins, you can register a .dll directly to CRM through the CRM Plugin Registration Utility. If your project needs more than one .dll, you need to merge them in ILMerge so you end up with a single assembly, then you can register that to CRM. The zip files are for Solutions that can be distributed to other CRM organizations. If you wanted to share the plugin you built as a stand-alone add-on, you would create a new solution with the necessary components, export it as a zip file and distribut the zip.
I assume Dynamics expects that assembly (DLL) to adhere to certain rules or be coded with certain attributes, does it do that? does it insist that any plug-in assembly adheres to some model like this?
AFK: Your assembly has to be signed, and it should be able to run in a partial trust environment to be fully compatible with CRM Online. It can access an external web service by name, but not IP address. Little things like that. There's also a 2 minute timeout for plugins and workflows.
I also assume that Dynamics leverages AppDomains in some way so that a bad plug-in can't cause system instability, is this true?
AFK: I think that depends on your hosting partner. The plugins should be registered in "isolation", or sandbox mode, to minimize this. If your plugins are really intensive then it absolutely can slow down your CRM.
If I did create a bad/buggy plug-in that causes an AppDomain to fail does that mean the user's CRM system is unavailable or does it continue and simply lose the functionality that the plug-in was providing?
AFK: If your plugin is causing problems then it will usually throw a Business Process exception and the rest of the system will continue on. That's the goal with sandbox mode, is that there's some protection around your custom code so if something inside goes haywire it can be terminated gracefully.
Hope this helps :)
Aiden