won't work with default spritebatch, since it will overwrite the used shader.
Shader...Apply() will just tell the GPU what shader to use, but afterwards spritebatch does it again when End() is called. So yeah nothing gained. It might be confusing with the whole "apply" thing, but the shader is only really applied once the triangles / quads are drawn.
Either way, it's most likely fine if you handle that one sprite seperately. If you depend on draw order, just do
otherwise you can do it before or after all the other draws.