The static keyword basically means that one instance of "whatever" is shared between multiple instances of a class.
It is useful for when multiple instances of a variable really aren't required for each instantiation such as global constants.
It is also useful, for example, when the class needs to keep track of the number of instances of itself. Like a video game that keeps track of how many enemies are on the screen. If a variable "enemyCount" is static, then it can be incremented and decremented each time an instance of enemy is introduced or eliminated respectively. Each instance of the class can change this one variable because they all share it.
Monitoring this variable, you can have your program introduce more "enemies" when enemyCount is less than 2 or something like that.