Issues rigging and skinning a characters helmet
I'm assuming that helmet and head are the same mesh, I would go this way: create a new bone which will be the "helmet" bone, and parent it (keep offset) to the head bone.

During weight assignement, the main error is to think that if vertices are 1.0 to the head bone they will follow the bone movements exactly: this is not true, unless those vertices have weight assignement relative to the head bone ONLY.

So probably in your actual rig vertices form helmet and top head vertices have the same weight relative to the head bone (probably 1.0) but have different weights relative to others bones (neck or others), so they don't move together.

If you want to check all assignement of a vertex, select it in edit mode and search the "vertex weights" tab in the "N" properties panel.

A precisation: as Blender does a normalization of weight values, if a vertex is assigned to a bone only, it will move exactly with that bone, even if the weight is very low (0.01 is infinitely greater than zero).



P.S.

Looking better at your picture it seems that the head is moving ok, while the helmet is overshooting: this is probably due to a double parenting: if the helmet origin is parented to the head bone and the helmet vertices are "armature locked" to the same head bone, a movement of that bone will result in a double movement of the helmet.