Si le sens de 'static' pour une fonction est le même qu'en java (et je ne vois comment il pourrait en être autrement), il signifie que cette fonction est appelée par la classe et non par une instance de la classe. Je m'explique :
Tu as une classe 'Voiture' que tu instancies en faisant '$maVoiture = new Voiture();'. Cela signifie que tu créés un objet de type 'Voiture'.
Au sein de la classe 'Voiture', si tu as déclaré une fonction 'demarre' normale, tu l'appeleras la façon suivante : "$maVoiture.demarre()". Jusque là, rien de nouveau.
Une fonction 'create' static, elle, peut (doit) être appelée de la manière suivante : 'Voiture::create();' : elle porte sur la classe elle-même (pas sur une instance de la classe 'Voiture'). Cela permet de créer des fonctions ne nécessitant pas d'instancier une classe et, donc, ayant une portée plus globale.
Attention, bien utiliser ce concept nécessite d'en avoir bien compris la teneur et l'utilité. Ce n'est pas si évident.