Threads:
1. Almost always 1. You rarely need more, and when you do they're certainly not for jumping or anything like that. Everything should be run within the same game loop (and thread). Examples of the few places I multithread - multiplayer games (server / clients need different threads), stuff loading in the background,
Background:
Always tile if possible. Huge textures take up a lot of memory and a long time to load. Even if you want the whole level to look unique (like one long image), you should break up that image into screen-sized pieces so at most you are drawing two at once (if the player is on between two screens).
Books:
I'll let others answer this one. I know a lot of people have good opinions here, and I don't.
One of the first games I ever made was a clone of Mario (it was called Jario, LOLOLOLOL). One thing I did (that is very noob) was adding threads all over the place. For example, when the player lands on an enemy, I created a new thread to bounce them back up (that little pop-up effect), instead of maybe, I dunno, applying an impulse to the player's velocity

. If you do want something to happen over a certain period of time, making another thread is not at all the right approach. Instead, make a list of "Effects" or something, and just tell them to update every timestep. If you want elaboration just ask.