Your head mesh is parented to the head bone. The mouth vertices are parented to the mouth bone, which is parented to the head bone. So, when you rotate the head bone, those vertices get a double rotation in space: one relative to the object position, and one relative to the vertices position.
Instead, the correct way is:
- In object mode, select the head
- Unparent the head from the head bone (Alt P, clear parents)
- Shift select the armature, and parent the head to the armature (Ctrl P, with empty groups)
- go to edit mode, select all vertices and remove all weights from all vertex groups.
- Assign a weight of 1.0 to all vertices of the head, except thoose of the mouth, in the "head" vertex group
- Assign a weight of 1.0 to all vertices of the mouth in the "mouth" vertex group
- Assign a weight of 0.5 to all vertices that are between the head and the mouth in both "Head" and "mouth" vertex groups
I noticed also that you should recalculate normals of the head vertices, and resolve some topology issues, but that is another topic.