I would say the only difference if the way you reference it, i.e. the containers have a name which can be provided to the API to fetch it, whilst for fetching MutableData’s you need the XoR name and tag type. After you fetch them, you interact with them both in the exct same way, i.e. using the MutableData API and NFS emulation if you prefer to.
At the moment from the safe_app_nodejs and DOM API it’s not possible to create another container but the one you can request to be created when you authorise the app with the
own_container option param. But this is something that was thought to eventually be possible if the app requests permissions for it, although I haven’t explored the lower level safe_core API well enough to provide more details at this time, I just remember this was somehow mentioned in the RFC: https://github.com/maidsafe/rfcs/blob/master/text/0046-new-auth-flow/containers.md
As mentioned above, in order to fetch a MutableData you need the XoR name and the tag type, and if you want to fetch a Private MutableData you need the encryption keys in addition to that.
If your app needs to store a reference to a MutableData it can store the required information so it can then fetch it, or alternatively it can just serialise the MutableData, store it, and then it can deserialise it to fetch it.
Correct, this is not supported yet.