How exactly does BIP11 work, and how can it be used, particularly with/without P2SH? I'm trying to write a BIP11-compliant C# client that creates a 2 of 2 or 2 of 3 transaction.

I'm also trying to understand if a 3 of 3 transaction is supported as well.

This example says they are creating a PS2H address, but I'm unsure of exactly what script is being signed, and the meaning of the parameters "2" in addmultisigaddress, and what happens when addmultisigaddress is called.

I have researched the BIP, the RPC documentation, and the forums.  I'm getting confused where if and when the P2SH is needed.
I think the reason you might be getting confused is that there are really two types of multisig, raw multisig and P2SH (pay-to-script-hash) multisig. P2SH multisig is basically just hashing the actual scriptPubKey desired and putting the scriptPubKey in the scriptSig. This stack exchange questions explains them in more detail: What are the limits of m and n in m-of-n multisig addresses?. 


  I'm also trying to understand if a 3 of 3 transaction is supported as well.


Yes, you can do m-of-3 multisig transactions with both raw multisig and P2SH multisig.


  the meaning of the parameters "2" in addmultisigaddress


The number provided is the m in the m-of-n. So if you want a 1-of-2, you do:

addmultisigaddress 1 '["1xy..", "1Jm..."]' 


The BIP11 (accepted) proposal you mentioned just made raw multisig a standard type of transaction that is recognized and forwarded on by standard clients. BIP16 (https://github.com/bitcoin/bips/blob/master/bip-0016.mediawiki) proposes the P2SH addresses, which allow for much shorter scriptPubKeys and support more types of multisig (e.g. 5-of-9, which you can't easily do with raw multisig because m-of-n multisigs with n > 3 are considered non-standard, as shown in the link in the first paragraph).