The modifiers are dependent on the order in which they are placed. The Shrinkwrap works good because it has a subdivided high resolution mesh to use for deforming.
However, when you apply a modifier it uses the mesh that is present at the moment it is applied. Since the Subdivision Surface modifier isn't applied yet, the subdivided mesh you see is not the real underlying mesh at the time of applying the Shrinkwrap modifier.
That's the reason why you get a warning / info in the status bar at the bottom: Applied modifier was not first, result may not be as expected:

The problem here is, applying the Shrinkwrap modifier is going to permanently change the mesh, it's going from procedural to destructive modeling. But the Shrinkwrap modifier cannot change the vertices permanently if the Subdivision Surface modifier is not applied and you can still change its resolution procedural. So the Shrinkwrap has to use the real existing vertices from before subdividing.