C0 and Transform (and C1) are applied in a particular order such that the CFrames of Part0 and Part1 of a Motor6D satisfy this equation:
Part0.CFrame * Motor6D.C0 * Motor6D.Transform = Part1.CFrame * Motor6D.C1
It’s been stated above that Transform is used internally by the Roblox animation system to pose joints. For your custom animation system that you mentioned, you can use Motor6Ds for your joints. You can use C0 and C1 in combination to rig your characters (or objects) so that they are ready to be animated, and then set the Transform property to pose them.
Often it is useful to use attachments to visualise and specify this information at the rigging stage. There is some information on the DevHub about how Roblox does this internally with its R15 character rigs and how you can use an API exposed by the Humanoid object to do it yourself.
BuildRigFromAttachments assembles a tree of Motor6D joints for a Humanoid. Motor6D joints are required for the playback of Animations
Starting from the humanoid’s Humanoid.RootPart, the function collects all Attachments parented in the current part, whose name ends with “RigAttachment”. It then searches for a matching attachment in the character that shares the same name as the attachment.
Using those two attachments, a Motor6D joint is generated based on the parts associated with the two attachments, and the Attachment.CFrames of the attachments.