I'm porting my game from Godot 2.1 to 3.2 and I've also come across these doubts. I've been updating myself on how these things work (by checking the source code, mainly).
So here are my answers:
- The only reason I can think of is that a transform can be applied at once to many shapes, because it's applied per owner and I guess that simplifies things like the inner workings of
CollisionPolygon2D that applies its own transform to all the shapes it owns (those the polygon is decomposed in for use by the physics engine).
- In Godot 3.x,
CollisionPolygon2D can work at runtime.
- How do you know? If you call
shape_owner_get_owner() with the owner id returned by
create_shape_owner() you should get back the
Object you passed to it.