Различия между классом и объектом?
Может быть вам легче будет понять, если вы будете думать о классе как о наборе функций, а об объекте как о наборе данных. 

Некоторые функции в классе могут быть использованы только с набором данных (т.е. объектом), который передается неявно, когда вы указываете $object->method(). 

Другие функции не требуют объекта, поэтому могут быть вызваны напрямую из класса.

С этой точки зрения очень логично выглядит Python, где у любого метода есть явный аргумент self, указывающий на объект, из которого был вызван метод. А запись object.method(5) является краткой записью ObjectClass.method(object, 5).
Всё просто. В случае класса это просто некое описание методов, полей и т.д. Когда мы вызываем любой метод класса, то в аргументах мы неявно передаем указатель this.
То есть в реальности вызов
a->b(arg);
выглядит как 
b(arg,a);
А static методы они отличаются от обычных тем, что у них нету этого неявного аргумента this