A Prefab is a key concept in the Scene Editor. It allows for creating reusable, customized objects. It borrows some concepts from the Unity Engine prefabs.
In a game level, there are many objects with a common behavior and appearance. For example, several enemies look the same and act the same. Or there are the “coins” that have the same animation and play the same sound when are taken. Or the player object is the same in all the levels. All these objects are perfect candidates to be created as prefab instance.
You can see a Prefab as the template of multiple objects. Or you can see a Prefab as a class, so you can create multiple instances of that class and place them in a scene.
In the end, a Prefab is just a class. If you look into the code generated by the scene compiler, a Prefab scene is compiled into a class that extends a Phaser built-in type, a ScriptNode, or another Prefab class. And the prefab instance are just instances of the generated class.
At the same time, you can customize prefab instance by changing the value of its properties. If a property of the Prefab (the class) is modified, this modification is applied to all the prefab instance, if it is not overriding in the prefab instance.
A very precise way to know how prefabs work, is to look into the code generated by the scene compiler. You will realize that it is just about Object Oriented Programming concepts like class, inheritance, properties, composition, and instances.