It's well known that glossy surfaces have what is known as the Fresnel effect - whereby reflections get stronger at glancing angles. Another lesser known effect however is that reflections can also get sharper at glancing angles if the surface is made up of micro roughness (also known as micro facets). If you search google for "floor" images and look at the reflections from doors/windows - you can clearly see this effect in action.
In order to correctly simulate glossy surfaces like rubber, plastic, floor tiles, polished wood etc correctly, you need to take both effects into account. Cycles glossy shader doesn't account for this effect by default and neither does the new Principled shader in 2.79 (although it does correct for Fresnel bloom)
A description of this effect is given in the video below related to Thea renderer. It is this effect my node group is designed to mimick.
This effect is also described in this Siggraph 97 paper (although my node group is an eyeballed attempt to recreated the effect and isn't based on the maths found in this paper)
This node group simulates micro roughness in an approximate way by making the roughness fall off as the viewing angle becomes shallow. It has the following advantages:
It increases the sharpness of reflections at glancing angles - which makes those reflections look much more realistic, especially on large flat surfaces like floors.
It also appears to eliminate the energy conservation issue encountered with high roughness materials in the default glossy shader (i.e. when you get bright halos around objects with high roughness values).
There are three properties to this node group.
Roughness - controls the facing roughness value - and works in much the same way as the glossy roughness value - use any value between 0 and 1.
Softness - this defines the glancing angle roughness. Keep this very low (zero for most glossy or semi glossy cases), otherwise you'll start getting fresnel bloom on the edges. Only up it if you have quite a matte material. If you feel that your edges are too glossy - you are better upping the falloff parameter below.
Falloff - This controls the falloff between facing and glancing roughness. Zero will use the glancing falloff across the whole model, while greater values will use more of the facing roughness. Values between 1 and 5 seem to work for most cases - but you can go as high as 10 and still get a benefit. The higher you go - the shallower the final glancing angle roughness will be. Avoid using very high values of this if your roughness is also high (i.e. for roughness =1, the falloff should also be around 1). Higher values of falloff work best on more glossy materials.
Just plug the output of the microfacet nodegroup into the roughness slot of the glossy, anisotropic, glass or Principled shader and you are good to go.
You can also use this node group in PBR material setups. By pluging an image or procedural texture texture into the roughness slot of the nodegroup, you can have texture controlled roughness with micro roughness effects. Similarly you can do the same with the softness input to allow some texture control over the softness/fall off too.
The coloured chess images show the same scene rendered both with and without micro roughness turned on - it should be obvious which is which. In all cases - the only difference is one has microroughness, the other doesn't. The actual roughness values are the same.
In the second set of chess images - the roughness values are 0.1, 0.25 and 0.5 for the three chess pieces. First image has microroughness with a falloff = 1. The second images has microroughness with a falloff = 5. Third image has no microroughness (i.e. just a plain glossy with roughness).
The development of this shader came about due to this thread on Blenderartists (special mention to MartinZ who had considerable input into it's development). If you want follow the thought process and justification behind it.