Shields can be added to do numerous things. Some shields use discrete IO pins, which then become unavailable to use by other shields. This is seem in motor shields a lot, where the cards all connect to the same PWM pins, so two cards of the same design can't be used.
Some shields use shared pins; an example is the I2C bus. Every shield that uses I2C has to monitor the bus (data on SDA, clock on SCL) for its address and then reply as needed. Another shared bus is SPI. Here, the shared pins are clock (SCK), data out (MOSI, or Master Out Slave In), data in (MISO, Master In, Slave Out), and each device will have a unique Slave Select (SS) pin. If two shields are designed to use the same SS pin (D10, D4, seem pretty common) then there is a conflict.
Other cards may use I2C to expand the number of IO pins, so writing to several registers on the shield provides additional input or output via shift registers, multiplexers, etc.
Some folks, like myself, don't bother with shields, and just put the arduino functionality and the added IO into a new card.
This one is an example. You can see the Arduino-like components at the left side - 5V regulator, ICSP header for a bootloader, L LED, the microcontroller and its crystal and caps, IO headers including +5/Gnd/IO pin for connecting potentiometers or other devices that might need power), Power LED, and on this board a couple of discrete transistors - and to the right a bank of up to 12 Open Drain Shift Registers (TPIC6B595) for 96 current sink outputs, good for controlling 7 segment displays, a plane of LEDs in a matrix, strings of LED strips, pretty much anything that needs 150mA of current to be controlled from up to a 50V source (LED strips for example need to control 20, 40, 60mA from a 12V source). USB/Serial is not built in because the design is not intended to be connected to a PC all the time. Instead, a header allows a USB/Serial adapter to be connected for downloading sketches. I've used this board in a number of projects, its turned out to quite handy.