What specifically does SDL_RENDERER_SOFTWARE do?

If you don’t explicitly create the renderer as SOFTWARE then SDL will try to create one using whatever the default GPU backend is for the given platform.

edit: beaten