IGMP is used in multicasting. It's a protocol used by applications to send information on joining or leaving a multicast session. The new generation cisco switches can perform IGMP snooping, meaning that multicast requests are identified at switchport level and the switchport is added to a particular multicast group. The multicast packets are only sent to the group, meaning the multicast stream is only send to switchports/users which asked to join. This reduces network load, without IGMP snooping the multicast streams would be sent to every active port on the network. IGMP comes in different versions, Versions 2 and 3 bassicaly have more options in communicating about the multicast session.
IGMP works over both Lan and Wan, it's merely additional info in the IP header. The technologies on what to do with IGMP are numerous, differ from L3 and L2 and can be quite complex (IGMP Snooping, CGMP, PIM)