Neither performance nor memory should be a concern if you use one rendertarget (or just a few)
You should create one rendertarget as a field somewhere
private RenderTarget2D _renderTarget;
Then you need to initialize the rendertarget at the beginning of your game
public void Initialize(...)
_renderTarget = new RenderTarget2D(graphicsDevice, width, height);
The width, height is what you want your ideal (low resolution) to be.
Then you render everything as usual, but tell the GPU to render to _renderTarget
done! Now render the result to the screen:
_graphicsDevice.SetRenderTarget(null); // Backbuffer
_spriteBatch.Draw(_renderTarget, ... final size etc.)
As you can see you can treat the rendertarget just like any other sprite/texture.