1. There are a bunch of different ways to get information out of streams, including liststreamitems – see the 'Querying subscribed streams' sections of the API page: https://www.multichain.com/developers/json-rpc-api/
2. Yes, you can have multiple keys on a stream item, it's not a problem, just pass an array instead of a string in the appropriate publish API. You can also use the liststreamqueryitems API to query items with multiple keys, but beware that it may be inefficient – it will choose the best individual key to use, but then has to scan all items with that key to check for the other keys. You might want to think how to use keys better to prevent that.