Minecraft 19w12b, Minecraft 1.14, Minecraft 1.14.3 Pre-Release 3
To not cause a lot of lag every time they are loaded, player_head textures are saved offline. But even in situations when they should be queried online again, they often aren't.
One example, replace "FaRo1" with your own username:
2. Close Minecraft and change your skin.
3. Reopen world.
Result: The skulls have not changed. They should have.
Result: The new skull also has the old texture. If the world was opened far away from the old skull, so that they were not loaded, this issue does not happen. Going back to it the old skull shows them with the new texture.
Result: Success message, even though both skulls look the same. Looking at the NBT of a new skull reveals that the string Owner.Properties.textures.Value does actually differ (only a little bit in my test).
Changing the value of Owner.Properties.textures.Value with commands also does not change the texture and setting, getting and comparing the value with other texture strings or regular strings has many inconsistencies, but I haven't found a clear pattern in any of that yet.