I would recommend making both the bullet and the enemies dynamic ghost types (without gravity, if you so wish). This would enable all objects to detect collisions with each other. As to your problem of one bullet hitting multiple enemies, the problem is that the bullet collides with enemy 1, and is set to be removed from the scene - however, enemy 2 is also colliding with the bullet, and so also takes a hit. You will have to use a little Python to basically make it so that the bullet isn’t a ‘bullet’ anymore by removing the variable that the enemies are looking for when they look for a collision between themselves and a bullet (so that the bullet is rendered inactive on collision with the enemy, before it gets removed from the scene).
The bullet’s script is this:
from bge import logic # Import the bge module's logic module
cont = logic.getCurrentController() # Get the controller running this script
obj = cont.owner # Get the object that the controller belongs to
enemycol = cont.sensors['EnemyCollisionSensorName'] # Get the sensor that the bullet uses to collide with enemies; replace 'EnemyCollisionSensorName' with the name of the enemy collision sensor
obj.endObject() # Delete the bullet object itself
del obj['bullet'] # Delete the 'bullet' variable (or whatever variable that you use to identify the bullet being one)
Put that script in the controller, connected to a collision sensor, and rename the line in the code ‘EnemyCollisionSensorName’ the name of the attached collision sensor.