ICMP messages range on what they do from time out messages to host not reachable messages.
There are some messages you shouldn't filter out unless you know the concequences and can deal with them..
Some including the ICMP Can't Fragment Error , ICMP destination unreachable (Trade off here is UDP scans work but then you do get a port closed instead of timing out)
Some of the messages you should block from leaving your firewall out to the wild wild web are icmp address mask requests (ICMP_MASKREQ,
type 17), This permits an attacker to learn toplogical information about an internal network
(ICMP_ECHO) or Ping is another one you should restict to certain machines on your network.
Here is some more information on RFC 1122 and its take on ICMP and the various messages
Link
Here is a site on Path MTU Discovery and talks about the Fragmentation ICMP message
Link
This is just the tip of the iceburg but the main thing you should learn is that ICMP is pretty complicated and is very tightly weaved into the TCP transport model.
Enjoy