Introduction and Rendezvous points are only used for Hidden Services. The Introduction point is chosen by the Hidden Service and published with the HSDir servers handling the Hidden Service. When a user wants to connect to the Hidden Service, they randomly choose a rendezvous server and ask the Hidden Service (through the introduction point) to connect through the Rendezvous point. Both connections then make a 3 hop circuit, the same as when connecting to an exit node, to that rendezvous point.
Hidden Services:
- User -> Guard -> Middle Node -> Middle Node (Exit-Ish) -> Introduction <- Middle Node (Exit-ish) <- Middle Node ` <- Guard <- HS
- User -> Guard -> Middle Node`` -> Middle Node (Exit-Ish) -> Rendezvous <- Middle Node (Exit-ish) <-Middle Node ``` <- Guard <- HS
Exit Node:
- User -> Guard -> Middle Node -> Exit Node -> Website
As noted in the comments below, and in the references material linked, the connection to introduction and rendezvous points is actually a full circuit, so should include 3 hops.
In general, the complete connection between client and hidden service consists of 6 relays: 3 of them were picked by the client with the third being the rendezvous point and the other 3 were picked by the hidden service.
Regarding whether the middle nodes can be the same, they can be. As the visitor and the host each choose their 3 nodes in the circuit, they could both choose the same middle nodes. That means that there may be duplicate nodes in the 6 hops, but they would be on different sides of the rendezvous server as each Tor instance would not choose the same relay twice.
References
- https://www.torproject.org/docs/hidden-services.html.en
- https://svn.torproject.org/svn/projects/design-paper/tor-design.pdf