Looking for some coding tips for creating multisite-aware plugins

I'm starting work on a plugin that needs to be multisite aware. In fact, it needs to be able to (a) communicate between the sites and (b) share network-wide data. I'm looking for some best-practice suggestions about how to make this work nicely inside WordPress. Here's an example. Let's say I have a multi-site install with ten sites named A through J. Only four of those sites needs to run my plugin, say B, C, D, and G.

First, I need to have a place to store the information about the sites that have enabled the plugin. Is that something I'd store in the base WordPress table options? And what's the best way from, let's say, Site C, to write to the options table in the base table?

In fact, what's the best way to get and put data between the sites? Do I need to do a switch site, get the data, and switch site back? Or can I simply request data from each site? Obviously, things like getting recent posts is site-specific, but what if I just want my plugin running in Site C to get its sister plugin data from B, D, and G?

And then there's the question of network enabling. Do I design this plugin to network enable, and do I build an options screen on the network dashboard? Or do I do all this on the first table (the first site) and then build my options there?

Anyway, hints, tips, best practices would all be appreciated.