On 7 April 2012 02:23, Fernando H. F. Botelho <fernando.botelho@f123.org> wrote:
1. I tag incoming messages with any number of arbitrary tags, and these get assigned not just to that specific e-mail message, but also to the contact (i.e. email address) behind it.

You can construct a list of email addresses from a list of emails, so what you want should be doable without tagging contacts, which is currently not possible directly. You just tag your messages as you like, either manually through one of the GUIs, or automatically with a script.
 
2. I decide I have a message to send to every person that has tag A, B, D, F, and Z, and I select those and the e-mail client allows me to e-mail my message to every contact that has all of those tags.
 
You can construct a list of email addresses that have sent you at least one email for each tag. This can be done with the notmuch much command-line interface and a minimal amount of scripting, for example with shell script. With this list of addresses, you can then start your mail client of choice with a new compose window already opened that contains all these addresses. I know this works with Thunderbird, many other clients should also support this. 

The only open question I see is what kind of interface you would like to use to select a set of tags. I am not sure what is the most convenient way for you, but this should not be hard either. Feel free to contact me off list if you have any further questions.

Hth,
Arian