I'd like to understand the sequence of events when sending a method to the telegram server.
For example, if I send the get_future_salts method I am expecting from the server a response of type FutureSalts, but what I receive is a type of MessageContainer (which I'm having trouble parsing, but that is a separate issue).
If I ignore the MessageContainer object and simply request the next response from the server I receive the expected FutureSalts object.
Will there always be a MessageContainer object returned for each method called? If so, do I need to parse and process these MessageContainer objects?
No, not always. 
The server however usually packs multiple messages into containers. 
I would advise that you decode all the data returned from the server. 
You then have a full view /log of all that is being returned, then you can decide on what needs to be replied to.
Client/Server interactions using the Telegram.org API