You do your drawing in the offscreen buffer, then copy from the offscreen buffer to the onscreen one. Using double buffering solves the flicker problem in animation. If you were to do all your drawing onscreen, the constant erasing and drawing would cause flickering, which looks very bad. All a sprite is a rectangular pixel map which contains a bunch of color values. By having one value stand for transparency, usually 0, you can have these rectangles look like people, spaceships, monsters or whatever you want them to look like.
Many games use sprites to represent the player characters, monsters, missiles and items in the game.
Yes there are. What you do in dirty rectangle animation is determine which parts of the screen changed from one frame of animation to the next. These parts that changed are the dirty rectangles. You draw the dirty rectangles when you are ready to render the frame. By drawing only the dirty rectangles rather than the entire screen, the drawing goes much faster.