How do you make objects not collide and pass through each other?
Collision groups are the correct way to do this.

Set your "bad guys'" collision group and collision mask up like this.


Set the "good guy" up like this.


Now here is why. The Collision group is conceptually assigning a number to the object say 1-8. Your good guy has collision group one. The Collision Mask is what number collision group it can collide with.

So looking at your bad guy, it can only collide with other objects that are assigned to collision group 1. Itself is set to collision group two so it will not hit other bad guys. Your good guy is set to collision group one, and it can collides with all groups.

Blend file with bge collision demo.