No it is not redrawing them it's just an indirection in drawing. This is needed in order to get a "layer". You need a object which contains the sprites inside the layer which will tell the sprites to be drawn when itself is being drawn. And in SFML, to keep it simple, you could say that any other drawable drawn inside a drawables Render method will inherit the position.
So if we write:
Layer layer;
layer.SetPosition( 500, 500 );
sf::Sprite sprite( /* Set image from somewhere */ );
sprite.SetPosition( 10, 20 );
layer.AddDrawable( sprite );
myWindow.Draw( layer ); // <- The sprite is drawn at (510, 520).
myWindow.Draw( sprite ); // <- The sprite is drawn a second time at (10, 20).
Here sprite will be drawn two times at two different positions. If we remove the last line then it will only be drawn once. See at the layer object as something abstract that is not directly viewable at the screen but the effects are.
I hope I'm clearer this time.
**EDIT**
Did you mean the sf::RenderImage? Sorry then yes it will be drawn a second time but there are several techniques that depends on that you render the data to a off-screen image before rendering it into frame. Though telling the graphic card to use a texture and apply it to a quad covering the entire screen is a simple process for the GPU. So shouldn't be much of a problem.