(1) Each vertex generally has position, normal, texture coordinate, etc. like typical 3D models. With .b3dm, each vertex also has a batch id, which identifies which feature (e.g., building) the vertex belongs to. The batch id is an index into the batch table with per-feature attributes.
(2) As of now, .b3dm tiles are in WGS84 using the glTF extension, CESIUM_RTC. In the next month or two, I expect to add a model matrix to tileset.json (or maybe individual tiles) to, for example, handle indoor use cases where the geometry is relative to a location coordinate system.
(3) No, the idea is to “batch” together multiple models into one glTF file and use the batch id vertex attribute to uniquely identify them. This provides the best Cesium rendering performance. You can also use a Composite Tile to combine multiple .b3dm tiles, but the rendering performance is not as good.
(4) It shouldn’t be much harder than adding the .b3dm header. For simple examples, see https://github.com/AnalyticalGraphicsInc/cesium/tree/3d-tiles/Specs/Data/Cesium3DTiles/Batched