Umm i´ll try to be as incisive as i can...
Imagine that Sprite is the most important element. It´s the object responsible for showing anything on the screen. But the sprite itself is an empty element, it needs to have something "inside" it to really show anything. And because of that we have the Bitmaps, that are like the "skin" for the sprites. Now, the piece of the sprite that will be shown on the screen will depend ONLY on the bitmap´s size (or on its src_rect property, read about that later, it´s on the help file). So, if you have a bitmap that´s 640x480, the sprite will take all the space on the screen (in the case it´s positioned at the top left point).
Sometimes, in your coding, you need to limit the sprites' sizes for some reason. Imagine we don´t want the bitmap to occupy all the screen, only the top half. For that we use a Viewport WHEN we initialize a Sprite object. When a sprite has a viewport, we can, like SS said, layer them somehow, and keep track of trivial data like Z and the part of the sprite that will be shown on the screen. Also, with viewports you can easily flash and blend colors in a sprite. Tilemaps and Planes uses them, and every object that´s sprite-based can.
Imagine that:
bitmaps -inside->
Sprites <-attached_by-
Viewports
For instance, test those two codes on a new event on map:
Event 1:
# Trying to make a sprite without a bitmap...
sprite = Sprite.new
# WTF! Nothing appears!!
Event 2:
# Now let´s put a bitmap into it!
sprite = Sprite.new
sprite.bitmap = RPG::Cache.title("001-Title01")
# Hey! A title screen! Nice!
Event 3:
# Create a new viewport to control the sprite
view = Viewport.new(160, 120, 320, 240)
# Create the sprite attaching a viewporto to it
sprite = Sprite.new(view)
sprite.z = 0
sprite.bitmap = RPG::Cache.title("001-Title01")
# Now we can change sprite´s Z with the viewport. Note that the sprite´s Z
# and the viewport´s Z are different!
view.z = 5001
# That will make the sprite appear above all screen sprites (events, map and such)
Now test the code and see the difference... ^^
P.S.: I did a nice post about Sprites and Bitmaps, i have to find it lol ^^
P.S.2 (or edit ^^):
FOUND IT!