Pipeline layouts are similar to descriptor set layouts. Descriptor set layouts are used to define what types of resources form a given descriptor set. Pipeline layouts define what types of resources can be accessed by a given pipeline. They are created from descriptor set layouts and, additionally, push constant ranges.
Pipeline layouts are needed for the pipeline creation as they specify the interface between shader stages and shader resources through a set, binding, array element address. The same address needs to be used in shaders (through a layout qualifier) so they can successfully access a given resource. But even if a given pipeline doesn't use any descriptor resources, we need to create a pipeline layout to inform the driver that no such interface is needed.