In the top image, shrinkwrap is below the subdiv. So what Blender does - in that order - is it Mirrors the mesh, subdivides the mesh, and then shrinkwrap’s the mesh. Blender sees a higher resolution mesh than what you truly have.
If you move the shrinkwrap above subdiv, then it will mirror, shrinkwrap, and then subdiv, which is what you have now.
generally you don’t want the subdiv in the stack first, because you’ll end up with a very dense mesh, which defeats the point of retopo-ing the mesh. The solution is simply to add more geometry to your retopo. Just enough that it hugs the original shapes a little closer.
There is the option to use multires instead of subdiv. I’m not going to explain multires in this post but you could have mirror, multires, shrinkwrap then apply shrinkwrap and it will keep the details of the shrinkwrap.
I want to add onto yogyog’s suggestion: when retopologizing, at the end you want multires instead of subdivision so that the shape is properly preserved when you apply shrinkwrap. However, multires is incompatible with edit mode, so I advise using subdivision while retopologizing, assuming you want to be able to preview the subdivided retopology in edit mode.