Sorry I didn’t follow up more, ran out of time. The head tilt can be a result of a couple different issues. The biggest is strength. You see it a lot in younger and smaller youth pitchers. They develop it as compensation. Your son throws with a lot of intent, which is great. It looks like something that he has worked a lot on. He needs to have the strength to support it (which I would bet would also help with the recoil). Some of it will work itself out as he grows. There is a lot of great info on this site and others (I’m a fan of Eric Cressey) on good ways to create functional strength.
I also see this from kids who were forced at a young age by well intentioned dads or volunteer coaches to throw “over the top”. If it is not a natural throwing position (which it isn’t for most) kids will compensate with a head tilt. Raise the hand higher, move the head over.
Fixing using drills takes a lot of repetition. I use the knee drill (throwing from two knees, not one), and the rocker drill which both take the earlier momentum out of the throw. You can also try having him pitch from flat ground at a small cone on the ground at extended distances (start 60, then extend out). Extending the distance magnifies the mistake and they miss the cone by a lot. You will be surprised at how trying to hit a small target by pitching at extended distances will force them to keep everything in line with the target including the head.
One last thing I once watched someone much smarter than me try that worked immediately. He told a kid to throw some pitches sidearm and see how it felt. What felt like sidearm to the kid turned out to be a nice 3/4 delivery with the head tilt removed that felt more natural and comfortable.