Well depending on if you mean technically (offscreen) or literally.. they aren't actually "offscreen"..
When you add a surface, you provide a width/height:
local mysurface = fe.add_surface(640,480);
By default the surface will be at 0, 0 of its parent (either fe's "surface", or some other surface). So it's already "onscreen", but invisible because nothing has been drawn on it yet. Once you add something to it:
mysurface.add_text("My Surface", 0, 0, 640, 30);
You should see the objects on it. Surfaces have no background, so something has to be drawn on it to be seen. You can move your surfaces x/y also if you want, and you should notice that the text would move with it.
Hope that helps!