Hi Jay
You might find this link useful, although it sounds like you've got a good grasp of the concepts already
http://greyminecraftcoder.blogspot.com/2020/03/minecraft-model-basics-rotation-1144.html
Something I've found extremely useful while debugging model rotations, translations, and scales is to add in-game tweakable parameters, i.e. typing a command
/mbedebug setheadrotation 2 53 6
and seeing what effect it has on the model without having to recompile.
See mbe80 in here for an example
https://github.com/TheGreyGhost/MinecraftByExample
There are lots of traps when rotating and translating and I can never figure it out on paper, I find it easier to get 80% of the way there based on the theory and then get the rest of the way by trial and error.
Things that have tripped me up:
* order of transformation (translation, rotation) is extremely important and (at least for me) not intuitive. Even when I try to follow the theoretical rules I still usually stuff it up
* rotation around an arbitrary point (as you already said) is translate, rotate, translate, but not necessarily in the order/direction you expect
* model space vs world space -> your rotations and translations may be around a different axis to what you expect, or around a different origin, and translation may be in the opposite or even in an oblique direction
Generally the answer has been:
keep model-space and world space transformations separate
if vanilla forces you to apply one at a time that you don't want to, you need to transform back from world to model, do your desired transformation, then transform from model back to world again.
take baby steps
use interactive in-game parameter tweaking of some kind (eg the mbe80 I mentioned above)
-TGG