1: Can anyone tell me how a machine "registers" with the router to say it wants to be part of a multicast group?
This is done with the Internet Group Management Protocol (IGMPv1, IGMPv2 and IGMPv3) for IPv4 and Multicast Listener Discovery (MLDv1 and MLDv2). In general the multicast router queries the nodes on the local network and the local nodes report which multicast groups they are interested in.
2: How can a host find a multicast group appropriate for them? (e.g. Multicast Group 1 is VOIP, #2 is file xfer. How does the server discover which IP is needed)
That depends. Some protocols have well-known multicast groups. See the IPv4 Multicast Address Space Registry and IPv6 Multicast Address Space Registry at IANA. Other multicast groups are communicated using some other protocol, URLs, configuration files etc.
3: How does a machine leave a group?
When using the older versions of IGMP and MLD the router will know that a client isn't interested in a multicast group anymore when the client stops sending report that it is interested. There will be a timeout and when no client on the network is interested in a particular multicast group anymore the router will stop forwarding multicast packets for that group. The newer versions of IGMP and MLD also give the client the option to explicitly tell the router that they want to leave the group. The router then queries the rest of the local network and if there are no more listeners it will stop.
On an ethernet multicast packets are sent to certain multicast MAC addresses. Delivery of packets to those addresses depends on which MAC addresses the ethernet adapter is listening to. So to receive multicast traffic the client calculates which MAC address to listen to, configures the ethernet adapter and then lets the router know which multicast traffic it wants.
The most difficult part in multicast is how to forward multicast traffic between routers. The risk here is that routers start forwarding the same multicast traffic to each other, creating a loop. There are multiple protocols that can be used for this. Common ones are PIM-DM (Dense Mode), PIM-SM (Sparse Mode) and PIM-SSM (Source Specific Multicast).