What are they?
Buffers are solutions in which the conjugate base of an acid and that acid or a conjugate acid of a base and that base are in solution together. A buffer is defined as a solution that resists changes in pH. If you have a buffer solution and you add a little bit of acid, the pH does not change very much. If you add a little bit of base, the pH does not change very much. In a normal, neutral aqueous solution, the addition of just a small amount of a .1 molar strong acid will change the pH by factors of hundreds of thousands. If you have a buffer, however, the addition of that same amount of acid would not change the pH appreciably.
The way a buffer works:
A buffer is always going to be some combination of a weak acid with its conjugate base. Like acetic acid with sodium acetate, acetate being the conjugate base of acetic acid, or a weak base with its conjugate acid. An example of this would be ammonia with ammonium ion. If you have an equal amount of amonia and ammonium ion in an aqueous solution, and they're at equilibrium, the Kb is going to be equal to the ammonium ion concentration times the hydroxide ion concentration divided by the concentration of ammonia.
Kb = ( [NH4+] [OH-] ) / ( [NH3] )
If you have an equal amount of ammonia and ammonium ion, then the Kb is going to be equal to the concentration of the hydroxide because the ammonia and the ammonium ion would cancel each other out. Now, upon addition of a strong acid, rather than the acid lowering the pH of the solution, the added H+ is going to convert some of the ammonia into ammonium ion. In that way, the ammonia essentially eats up the added acid by turning it into ammonium ion. And so the OH- concentration is not affected much. It's like pouring water on a sponge sitting on a table. The surface beneath gets a little wet, yes, but not nearly as wet as it would have been had you poured the water straight onto the table. If you add a little bit of base to that same solution, rather than the base, the hydroxide, making the pH rise, the hydroxide will convert some of the ammonium back to ammonia. That's how reactions occur in buffers that use up the added acid or the added base. When you start adding too much acid to this buffer, you're going to start using up all of your ammonia. This is called buffering capacity. You can buffer up to a certain point, but if you add more acid than you have ammonia, you'll exceed your buffering capacity and any additional acid will begin lowering the pH, and vice versa. If you add too much base, it will use up all the ammonium ion and any extra base will go into raising the pH.
Generally in a buffer, you want a weak acid and its conjugate base, and in approximately equal amounts. A solution that has a whole bunch of ammonia and not much ammonium can still buffer against acids. Adding acid to that solution will still change ammonia to ammonium and the pH wont drop much, but it will not buffer against bases. In other words, you can have a solution that resists pH changes in one direction but to qualify as a buffer, it has to resist pH changes by both acids and bases.