Sorry if I misunderstood your question, but are you asking what is the standard way of running collision detection on objects in a game?
Are you talking about collision detection in physics simulations or general computer graphics applications?
HTH,
Generally, the polygons you render aren't the polygons that are used to represent solid objects (rigid bodies). In a game, a triangle soup is generally represented by a convex polyhedras (AKA convex hulls/sets) due to the bad performance that mesh-mesh intersection tests have. However, hull-hull intersection tests do still a little bit slower. For instance, running a sphere-sphere test is 90% faster than a hull-hull test. Therefore, objects with well-know simmetry such cubes, spheres, cylinders, etc. has its own intersection routines to increase the performance of the collision detection system.
My question is if that's a legit approach, and if that issue has ever been brought up for discussion.
Particularly, for a rigid body physics simulation in a game, this is the legit approach. However, it is definately not the standard approach for more serious applications such CAD, medical training, 3D modelling, etc.
Now the obvious approach I thought of for dealing with physics is to store the vertices and indices of every entity (and perhaps normals too, to reduces some calculations), and then feed the Physics::calc_collision_with_triangle() routine with the each entity's triangles, based on the indices.
...or you can abstract everything and separate physics from graphics.