Are transactions many-to-many? If so, who decides on the grouping? When I go to blockchain.info and explore transactions, I see a lot of individual transactions that seem to show bunches of addresses sending to bunches of other addresses.

https://blockchain.info/tx/221668ab11014c34da20296a1607ecc7967d1bdeecb884f1bf163e6b6c9f1d72

Does the Bitcoin network/protocol control that automatically, or is that done by the individual/agent initiating the transaction? e.g. Let's say I want to send 123 to one address. Is that going to be grouped into a big transaction involving many people and many recipients (including mine), or is it going to appear in the history as a transaction between strictly two addresses?
Transactions are not grouped or collected together in any fashion, unless the sender of every Bitcoin within that transaction agrees to that. CoinJoin is one way of grouping your transaction together with other people.

There is also a proposal called 'MimbleWimble,' which would make it possible to combine many transactions. This has not been implemented, though.