The data is stored in the Colony and all relevant classes will implement INBTSerializable and their data will be stored in the colonies NBTTag.
All non fullfillable request end up at the player.
Most data can be cached when the overall state of the Colony changes (request completed, building added, building upgraded, worker added etc)