How to make puddles with the Principled BSDF?
In Cycles displacement is handled independently of the surface shader, so the workflow is the same whether you're using the principled bsdf or not. You simply connect the displacement/height map to the "displacement" socket on the material output node. See Blender Cycles True Displacement

As for puddles, an easy way to do with just a texture is to manipulate the base color and roughness channels. Puddles are generally darker and shinier than the dry areas of the surface. Here's an example using a simple noise texture to define what is and is not a puddle. A ramp is added to make a sharper transition between the light and dark areas of the noise:



(please excuse the "roughness" label on the basecolor texture node, it was an oversight in building this nodesetup. It's a different image and being used as the basecolor texture)

The lower the roughness and make the surface darker, we can simply multiply the roughness and basecolor channels by our noise map. To make the puddle surface smooth, we also use our puddle noise map to be blend a blank normal map node and the actual normal map node, removing the normal effect where the puddle water would cover it.

This is just one way to do it. There are other options, such as mixing multiple principled bsdf nodes, or using the clearcoat function. This is just a way I feel is simple and efficient.