Please have a look at a JMX console ($Infinispan_server/bin/jconsole.sh or JViasualVM tool). The statistics are exposed as MBeans.
Answering your questions:
1) Yes, there are scenarios where you can have more than 1 cache container and expose it to different clients (say one of the client connects to Cache Container 1 whereas other to Cache Container 2).
2) Hmm that's interesting... I'm assuming you tried turning globalConfigurationBuilder.globalJmxStatistics().enable() on? If so - could you please create a JIRA for this?
3) Assuming you're playing with DefaultCacheManager, when you invoke getCache method, the DefaultCacheManager checks if it has been already created and if not, gives you a new Cache. So it's happening exactly the way you described it.
Thanks a lot for taking the time to answer. I've since gotten JMX Console up and have been able to review the statistics as you suggested.
I don't think I used the globalConfigurationBuilder to set globalJmxStatistics to enabled, maybe that's why I didn't see the caches in JBoss. I'll give this a try.