ARP (Address Resolution Protocol):
Finds the data link layer address (the MAC address) for a known IP address that is on the same subnetwork. Say your host is connected to a switch, and you want to ping (or connect) to an other host on the same switch (on the same sub-network). Your host will send a broadcast ARP request saying "Hey guys, What is the MAC address of this IP?". All your hosts/devices on the switch will hear this request but only the host that you wanted to connect to will reply (unicast) saying "I have this IP, this is my MAC". Your host can now start sending packets/frames using this MAC address as the destination in all frames it sends. This way the switch knows were to send the frame (because the switch has a map: MAC-to-port).
Note that your host will cache this MAC for some time, for usage in the next few minutes. So we don't need to broadcast a question every time we want to send to the same host. By the way ARP is not strictly a datalink layer protocol, it's defined in both the datalink and network/internet layers (2 and 3).
RARP (Reverse Address Resolution Protocol):
Almost the opposite of ARP. Finds the IP address of a host with a known MAC address. As far as I know, it was used in the past when MAC addresses used to be configured on a central server. BOOTP and DHCP made this obsolete.