I think it’s sculpted : in comparison to the low poly there are additional geometry (the horns on the head by example) that can’t be the result of a normal/bump map.
Displacement, it’s possible, but for displacement to produce any result you would need to subdivide the low poly a lot to produce the mesh density required for a displacement map to produce very detailled result like on the screenshot.
Probably used Zbrush to be able to paint on a high poly sculpt, as i don’t think Blender viewport performance can allow to paint with your system slowing so much it will be unworkable.
Using Blender what i would do is :
make a low poly model.
go to sculpt mode and sculpt using Multires modifier.
when satisfied with the sculpt, bake the normal and ambient occlusion of the higher multires level to the lowest one so you obtain a normal map (that will use the light to trick the eyes into having your low poly being detailled) and an ambient oclusion map (that would serve as a nice texture basis/overlay)
go to Texture Paint mode and paint, save your painted texture.
use GIMP/PS/whatever image editor and load your painted texture, and add the ambient occlusion one as an overlay.
as an alternative to Blender sculpt mode, you can export your low poly model to OBJ format (be sure there’s no non-manifold part before) and import the OBJ into Sculptris by example.
Then once finished with the sculpting , export the result into OBJ and import in Blender so you can either retopo or use a shrinkwrap modifier to have your original low poly trying to fit the high poly sculpt space.
Then bake normal and ambient occlusion.