I know GetMass() can return 0 at times - I think if the physics aren’t active on the actor. GetMass() is the Physx interface. CalculateMass() is UE4’s attempt to ‘guess’ what GetMass() will be.
I don’t know why you’d expect the components to move together if bWeldSimulatedBodies is false? The component that isn’t welding itself to its parent will then run its physics simulation independent of that parent. If you want it to follow, but not be “welded” then you need some kind of joint?
I don’t know why AddForce is producing torque, nor why 0 mass objects are affecting the center of mass.