The best place to start is the Developer Center for Exchange on msdn.microsoft.com.
If you want to process messages as they're traveling between mailboxes, you want to look into creating a Transport Agent.
However, if you want to look at messages at rest, in a mailbox (or a set of mailboxes), you want to look at Exchange Web Services (supported in Exchange 2007 and up).
However, istead of writing against the EWS SOAP API directly (which can be cumbersome), your best bet is to use the EWS Managed API, which essentially a wrapper for the SOAP API that you can call directly from C#, and it makes looking at mailbox content (and other cool stuff) really easy from C#.
EWS Managed API Docs