Shrinkwrap is going to be the way to go. This is the general process I've had success with.
The biggest problem with the two meshes is that blender doesn’t really know what I want so modifiers like shrinkwrap basically just project or move to the nearest face/vertex. It doesn’t know what to do with the small details in the face. To account for that, I prepared the mesh for the shrinkwrap so that when I shrink-wrap it, it will wrap as I intended it to.
Basic Steps
1. Roughly align the reference FaceBuilder Head with the Base Player Head focusing on the alignment of the nose, mouth, and eyes especially.
2. Move the Headband, Eyes, & Mouth. Move everything out of the way.
3. Sculpt the Hihead base player mesh to match the reference FaceBuilder Head mesh. What the shrinkwrap modifier will do is just choose the closest face or vertex. For that reason it will look all jumbled up if they're not closely aligned. So we need to modify the mesh so that when the shrinkwrap tries to decide where to put the vertices on the object it picks the spot that we want.
4. Create a Vertex Group for the Shrink-wrap. There is a problem with just using blend_HeadShape for shrink-wrapping because the head I’m using as a reference ends way higher on the neck and the blend_headShape goes all the way to the collarbone. The vertices will just snap to the closest face or vertex and that’s going to be the bottom of the reference head and that is just going to splash up all the stuff below the neck to the collarbone up to those points. So instead I created a new vertex group for hihead model called "shrinkwrap" that ends at the very top of the neck.
5. Apply the Shrinkwrap.
6. Cleanup any artifacts.
7. Put Headband, Eyes, & Mouth Back in Place.




