Hi, thank you for your feedback, it's very much appreciated!
I believe another fire interval is taken into account right after reloading, so I understand that this makes the UI look out of sync with the reload mechanic. Not really intentional though, so I might fix this :)
It could be a good idea to have a pre-fire animation on the gun of some kind to let you know you are about to fire a bullet!
Both bullet penetration and critical hit chances are calculated in the same way and the math behind it is pretty simple. That being said, I don't rely on a 'random bag' implementation so in theory it is possible to hit a non-critical hit 3 times in a row, even though your critical hit chance is 90%.
Bullet penetration is calculated for each enemy, so if penetration is 50% and the bullet hits the first enemy, it has a 50% chance to penetrate that enemy. If it penetrates it goes to the next enemy and re-rolls the penetration chance.
I spent quite a bit of time on game scaling and balance, the idea was to make the game gradually more difficult without making it feel unfair when you reach the point where you can't keep up with the amount of enemies that are spawned or their health. If you feel like you can't keep up that's by design after a while, but if it feels unfair I should maybe make some changes.
Again, thank you for your comment! :)