You're absolutely right, flixel collisions are extremely basic and limited (to avoid the word "shitty"). Currently, the best way around that is to use Nape, which is super solid when it comes to collisions. A lot of people are doing exactly that, but of course not every game needs a full-blown physics engine just to realize collisions.
Sidenote, if you want a second hitbox, you can use a FlxObject (which has all the necessary physics for collisions) for that if you're concerned about the overhead of a FlxSprite (which would be pretty minimal). And instead of using groups you could use simply synchronize the velocity values of the hitbox within Player#update().
Nice game btw,I guess implementing flash gamepad support was worth it. :D A few thoughts:
- You should hide the mouse cursor, it being visible implies that there are mouse controls, which there are not - confused me at first
- Player movement seems a bit jittery, maybe pixelPerfectRender = false; helps? Unless you're not a fan of subpixel rendering.
- The player sprite is not really a good indicator of the shot direction, which can be confusing, especially when shooting up.
- In general, shot direction being tied to movement direction feels frustrating. This would work much better as a twin-stick-shooter where both are independant.