I dug into this some more and have come to the following understanding. I'm open to be corrected though, so if anyone knows more, please chime in. For now though, this is what I think is going on.
rigidbody.inertiaTensor contains the diagonalized elements of the inertia tensor or the principle moments of inertia. These correspond to some internal symmetry of the rigid body and are expressed relative to some set of axes which need not be the same local axes used to describe the body. The
rigidbody.inertiaTensorRotation gives you the rotation needed to express the inertia tensor with respect to the body’s local frame.
rigidbody.angularVelocity, however, is expressed in world coordinates.
So, in the most general case, we need to apply two rotations to the diagonal inertia tensor in order to find the angular momentum via Unity’s angular velocity vector:
rigidbody.inertiaTensorRotaion defines the rotation for the tensor into the body’s local frame, and
rigidbody.rotation defines the rotation for that transformed tensor into the world’s frame.
The exact implementation of how to do this may get ugly. I wanted to work within the standard mathematical frame that I have learned: matrices for tensors and rotations as opposed to fiddling with Unity’s quaternions. I wrote up my own class to do this, although Unity has the Matrix4x4 class, which could work. But you’d have to be mindful when working with the extra dimension, as inertia tensors and rotations are most commonly written as 3x3 matrices. The relation between quaternions and rotations can be found readily.
Another note is that you need to make a similarity transformation (had a link to Wolfram Math World here, but apparently I don't have enough reputation point to include it) when rotating the inertia tensor. (I can't figure out writing in latex on this thing, so the following notation will be ugly) You want:
I_new = R*I_old*RT
where I_new is your newly transformed matrix (inertia tensor), R is the rotation matrix corresponding to one of the quaternions, RT is the transposition of that matrix, and I_old is the original inertia tensor that you're transforming.
I hope this can be of use. And again, if anyone knows this to be incorrect, please post and correct me.