I think that the hierarchy that you want to know about is the called "scene graph".
The scene graph hierarchy has a lot of benefits, the majority of game engines use one. One of these benefits is the optimization of calculations. For example, collision detection ( the topic that you are asking ) and graphic culling to avoid send much information to the graphics card that is not visible.
The better form to know more about scene graphs is use one and see the features that have. For example, OpenSceneGraph or Ogre3D.
An overview:
A scene graph use basically the composition design pattern. A node can have more nodes, and the childs can have more nodes, ...
A node example:
class Node
{
public:
void addChild( Node* child );
void removeFromParent();
AABB calculateBoundingBox(); // Axis-aligned bounding box
private:
std::list< Node* > m_children;
vector3 m_positionRelativeToParentNode;
matrix4 m_transformation;
};
Then, the construction that you're asking is composed when the scene is being created. I'm going to create a soccer player.
Node* player = new Node();
Node* torso = new Node();
Node* head = new Node();
Node* larm = new Node();
...
player->addChild( torso );
torso->addChild( head );
torso->addChild( larm );
...
Ok. The player is composed. With the transformation of each node, and the position relative to the parent node, the bounding box can be calculated.
If we calculate the AABB of the player, and we do a collision test with other player, then is when we descend to the children and the collision test is done with more precision. If the test is not passed at player level, the children tests are not necessary ( we are optimizing ).
How to calculate the bounding box? Think that each node has his own coordinate system. The relative position to the coordinate system of the parent is the member Node::m_positionRelativeToParentNode, and the member Node::m_transformation is the own transformation in his coordinate system. With this information, we can calculate the bounding box of a node. Remind that if we know test two nodes, they must "live" in the same coordinate system. Then we need compose the transformations and go up to a common parent and do the test in the common parent coordinate system.
Edited:
There is a really good book about collision detection called: "Real Time Collision Detection".