So what's the .Display() method needed for
Do you know about double-buffering? This techniques uses two buffers: the front buffer (what you see) and the back buffer (where the data gets rendered). When you call Draw(), everything gets rendered into the back-buffer, so that the front-buffer can be displayed on screen without being modified. Then, when you call Display(), these two buffers are switched so that the back-buffer becomes the front-buffer and everything that you rendered during the current frame gets displayed on screen. Then the back-buffer, which contains data from 2 frames ago, can be overwritten with new data and so on...
Well, this is the same for RenderImage: everything gets rendered to a temporary buffer, and calling Display() updates the target image with this temporary buffer (well, this isn't always exactly true, but this is an internal detail).
why turn RenderImages black each frame?
The contents of a render image are not supposed to change if you don't call Clear() or Draw(). Can you show a complete and minimal example that reproduces this problem?
Also the Sprite resulting from an RenderImage is upside down and I have to call Sprite.FlipY() before drawing the Sprite on the screen
Same as above
This is not supposed to happen, and I'd like to see an example.