Ok, firstly have a look at the Geom Offset demos. These are much easier to use than Geom Transforms but are essentially the same thing. You basically add more geoms in the same manner as the first one then offset their position, without creating a transform container each time.
Regarding the collision issue, you should also be checking dGeom2CollisionGeom(geom,index) depending on the size of either object. The index is the collision number, it ranges from one up to a maximum returned by dGeom2CountCollisions(geom). See the detailed collision demo to see both 'dGeom1...' and 'dGeom2...' being used.
It is possible to return the collision info on Geom Transforms too btw, so you can try accessing the 'dGeom2...' data now. In the long run though you'll be much better off with Geom Offsets.
Regarding the collision issue, you should also be checking dGeom2CollisionGeom(geom,index) depending on the size of either object. The index is the collision number, it ranges from one up to a maximum returned by dGeom2CountCollisions(geom). See the detailed collision demo to see both 'dGeom1...' and 'dGeom2...' being used.
It is possible to return the collision info on Geom Transforms too btw, so you can try accessing the 'dGeom2...' data now. In the long run though you'll be much better off with Geom Offsets.