Instances are what replace "worlds" from Minecraft vanilla, those are lightweight and should offer similar properties. There are multiple instances implementation, currently InstanceContainer and SharedInstance (both are explained below)
All instances can be accessed by using the InstanceManager or by getting an entity instance
In order to have a valid world generation, you need to specify which ChunkGenerator the instance should use, without it no chunk can be generated. (check here to make your own)
A SharedInstance needs to have an InstanceContainer linked to it. The "Shared" means that this is an instance that takes all of its chunks from its parent instance container
What does it mean? That if you break or place a block to the instance container, the shared instance will also reflect the change (same if you place a block using the shared instance methods, changes will be reflected in the instance container and all of its shared instances)
This method is ONLY required if you instantiate your instance object manually, InstanceManager#createInstanceContainer and InstanceManager#createSharedInstance already register the instance internally.