As for IGMP version for IGMP snooping purposes, you cannot configure the IGMP version. Only version 3 is supported. However, IGMPv3 is backward compatible with IGMPv2. The only real IGMP packets you'll see transmitted by a switch performing IGMP snooping will be IGMP general query packets.
IGMPv3 query packets are processed in a fully backward compatible manner by IGMPv2 hosts. The only difference between an IGMPv3 general query versus IGMPv2 is that the IGMP payload of the v3 packet has some additional fields present in it not used by IGMPv2 hosts.
These are the fields that extend the IGMP payload beyond 8 bytes. However, this extra data is simply ignored by an IGMPv2 host, per IGMPv2 RFC 2236:
Note that IGMP messages may be longer than 8 octets, especially
future backwards-compatible versions of IGMP. As long as the Type is
one that is recognized, an IGMPv2 implementation MUST ignore anything
past the first 8 octets while processing the packet. However, the
IGMP checksum is always computed over the whole IP payload, not just
over the first 8 octets.
The Type field is set as 0x11 for both an IGMPv2 and an IGMPv3 query -- meaning the IGMPv2 host will process the IGMPv3 query and respond in the correct manner.