A lot of what to do depends on the topology and where you want various VLANs to go.
I would run with at least two instances, so that for a simple core/access switch model with each access switch dual homed to two core switches, some VLANs could use each leg IYSWIM.
If the network has definite areas, with VLANs only needed in certain areas, I would look at two per area. That way you get the use of multiple links as above, but also you can then manually prune VLANS to only go where they need to go, keeping the topology simpler for each group of VLANs.
I have two datacenters and have decided to go with a single region covering both DC's and multiple instances, grouped according to the location of specific VLAN's. A couple vlans are shared between the two sites and these will sit in their own instance.
Question: I have a number of VLANs which sit between the MSFC and FWSM which is working in transparant mode. My view is that these vlans' and indeed any other which do not extend beyond the core switches, do not need to be added to any particular instance.
Is this permitted or do all vlans have to be added to an instance?
In effect I am asking what the impact is of not adding certain vlans to any instances. Will they automatically appear in MST instance 0?
Indeed, all vlans are implicitly associated to instance 0. A vlan must always be able to follow the topology of a particular STP instance, and instance 0 always exists.
The most painful aspect of MST in my opinion is the management of the MST configuration that needs to be consistent across the whole region. If you need to move an unused vlan (assigned by default to instance 0) to a new instance, you will have to change the mst vlan to instance mapping on each and every switch in the network. This is a laborious and disruptive operation.
I would recommend that you split all you vlans (even the ones you don't use) into the maximum number of instances available (65). Let me quickly explain why.
If an instance does not have any active vlan mapped on a switch, it is not run at all. Meaning that it's not because you have this huge instance list configured that you're going to use more CPU for the unused instances.
If you don't need many topologies, it does not really matter if two vlans are mapped to two different instances as long as the two instances compute the same final topology (which is easy to achieve by keeping the configuration consistent between those two instances).
So if you split your 4k range of vlans across 65 instances, you will always have the ability to take an unused vlan assigned to an unused instance without having to reconfigure the MST configuration across all your switches.