First off, you have to think of raster graphics as a set of xy coordinates, with each pixel being assigned a color. Imagine a sheet of graphing paper.
bmp (bitmap):
The most basic format. Each pixel is assigned an xy value and an RGB value. Since the RGB value is usually in hexadecimal notation (FF11DD for a nice plum purple), you can see how image size is going to shoot up geometrically as dimensions increase. We're talking a byte or more per pixel - that's going to make some monstrous images. At this point in time, the only purpose of a bmp is as wallpaper in Windows 3.1.
tiff (tagged image file format):
Since bmp is so awful, tiff was invented. The main diff between bmp and tiff is that a tiff file has a header in it. This header can store all sorts of things, like file details, thumbnails, and more. It can even store compression algorithms. Thus, you get the millions of color variations of a bitmap, but without the size going nuts. tiff is the format you want to use for storing pictures, since it is not lossy (ie, it doesn't lose clarity over time), and it thumbnails easily.
jpeg (joint pictures engineering group):
jpeg is the king of the web and other raster graphics because you can compress it so well. Using an image optimizer, you can get jpegs down to 1/20 the size of a tiff, or more. Which makes it ideal for the web, since you can trade off quality for size. Unfortunately, the compression algorithm jpeg uses is a bitch. It compresses by finding rows or columns of extremely similar color and making using a single snatch of code to describe the whole thing. It does this each and every time you save your file. After 4 or 5 saves, a nice blue sky can turn into a mangled pixelated mess, and gradients go to shit rather quickly. Zoom in on any jpeg image and you will see linear artifacts - these grow and get more obvious over time. So the sacrifice of quality for size is only really good for web distribution.
gif (graphical interchange format):
Your basic indexed color image. Instead of every pixel having an RGB value, there is a color index table. So each pixel has position, but not value. In any image with less than 256 colors, this is going to save a lot of space. After that, though, the color table gets so advanced that the size tradeoff will be destroyed. Which is why you don't usually see gifs used for photos. gifs are better suited to small graphics with a limited color pallete. gif also supports transparency and frame animation, which makes it convenient for web deployment. Unfortunately, its past has been plagued with licensing problems from its inventor, CompuServe.
png (portable network graphics):
png was designed by the W3C to replace gif, because the restrictive license was impeding open development. So a png is just like a gif, but the creation engine/algorithm is open source. This made it possible for open source browsers and graphic apps to use it, and the birth of the gimp and the mozilla project are closely related to the rise of png. png supports transparency, animation, and color indexing. It also supports standard bitmap color referencing. It does this by having 3 different formats - 8, 16, and 24. The names presumably refer to how many bits each pixel can store. Although the png implementation is not quite complete or thorough yet (Adobe only supports png8 well), it has the potential to replace all the formats listed above.
This group here covers all the basics. Everything else is just same shit, different name. Some formats have proprietary compression packages, some have licensing issues, and some even write nearly unreadable headers. Many of them are very outdated or passe, based on the popularity that the internet has given gif and jpeg. And some even suck - provide no advantages whatsoever.