The following link explains Metalness Workflow in more detail:
PBR: The Problem with Greyscale Metalness — polycount
If you understand what Metalness value stands for, you will know it should have values 0 or 1. Eg. 0 for diffuse material, 1 for metal.
If metalness is 0, the pixel from albedo map is treated as diffuse color, and specular color of the material is set to white, if metalness is 1, the pixel form albedo map is treated as specular color and diffuse color is set to black.
While you can use metalness between 0-1, it is no longer physically based.
So metalness parameter acts as an optimisation, otherwise you would have to feed the shader: Diffuse Map(RGB) and Specular Map(RGB) of your material. Furthermore, it limits what materials you can make, however it makes the creation of material arguably easier and simpler.
The shader needs to know diffuse RGB, specular RGB, emissive RGB.
Given one RGB albedo and metalness(0-1), emissive(0-1).
If emissive = 1, I treat albedo as emissive RGB, diffuse is black,specular is black if metal = 0, white if metal = 1 (interpolated if between 0-1)
If emissive = 0, emissive its black and its just like your regular PBR shader as I stated above.
I was not describing roughness, but metalness, material is insulator when metalness = 0, and a metal when metalness = 1.
Rougness a value between 0-1, determines how rough a material is. Eg. for metal, rougness of 0 would yield mirror like reflection, increasing it would blurry them.
For diffuse material it may represent the interpolation between Lambert and Oren-Nayar shading.