Its used to manipulate IP header fields in packets so that your TCP/IP software knows what precedence to give it. You can also MARK packets and use it in conjunction with a queuing discipline such as HTB/CBQ to control bandwidth.
Its the first table that is checked when a packet is processed (checked before 'filter' and 'nat' tables). edit: to be more precise, each chain in the mangle tables is checked before chains in the 'filter' and 'nat' table. e.g. - PREROUTING in 'mangle' is checked before PREROUTING in the 'nat' table and so on and so forth.
http://www.linuxsecurity.com.br/info...thiptables.doc