We recently added support for instancing to Cesium for Unreal, which goes a long way toward making this possible. With instancing, a single model (such as a tree) can be instantiated multiple times, with different position, orientation, and scale for each.
If you make such a dataset yourself (which is possible, but would be a significant undertaking), you’ll be free to do whatever you want with it, including use it offline. If someone else makes it, the terms of use will of course be up to them.
No, not for creating a tileset with trees specifically. When you’re talking about creating your own tilesets, you’re in a very advanced realm. The 3D Tiles specification is the best source of information: