When there is mixed mode 802.11 b and g then RTS, CTS do come in as protection mechanism.
Are there RTS and CTS packets sent when the network only consists of 802.11g devices ?
Also, if they are not sent, please let me know why they are not applicable.

When only 802.11g devices are present, RTS/CTS frames may still be present, but they are not required.

The original purpose of RTS/CTS was basically a way for 802.11g stations to tell 802.11b stations to be quiet. Since 802.11b stations can't understand the modulation and coding of 802.11g OFDM transmissions, the 802.11g stations have to say to 802.11b stations "please don't interrupt while I talk in a foreign language."

The beauty of RTS/CTS is that these frames are very small and pose very low overhead to the network. So, even though they were designed to facilitate backward compatibility between 802.11b and 11g, they can be used in other ways as well. For example, if there are two client stations in a network that can't hear each other (hidden nodes), RTS/CTS can be enabled to prevent further collisions and performance degradation because the stations use these low overhead notifications that reserve the medium. The same principle can apply if there are a lot of collisions as a result of high utilization and large frames. RTS/CTS can be used to reserve the medium (small frames are less likely to experience collisions), then the larger frames can be sent, avoiding collisions. Similarly, this exchange is now useful for backward compatibility between 802.11b/g and 802.11n as well.

For those reasons, RTS/CTS may be used even if 802.11b stations are not present. But for pure 802.11g networks, RTS/CTS is otherwise unnecessary.

I might be missing something on this, but still I will go ahead and ask.
1. If RTS/CTS is unnecessary in 802.11g, how does it avoid collisions ? Is it something related to OFDM ?
2. Also, could you please explain me where CTS-to-Self fits in here and how they are used ?

my neighbor shares the internet with the neighbor on the other side, and me. My router can't hear Erins router, she can't hear mine. RTS/CTS would prevent collisions between Erins packets and mine, which can only be detected at the router in the middle

RTS/CTS and CTS-to-self are called protection mechanisms. They protect one transmission from being interrupted by someone else. If you think about a wireless network from a bird's eye view, you'll notice that the AP (or WLAN router, if you're at home) is roughly in the middle of the service area (assuming you're using an omnidirectional antenna). So, you have client devices (laptops, phones, tablets, etc.) all around the AP, some nearby, some far away. Every client device must be able to hear the AP in order to be a part of the network. However, not all client devices must be able to hear each other. So, the problem, as ad5mb has pointed out, is that you could have a pair of hidden nodes that can't hear each other (even though they can both hear the AP), and thus, won't obey the protocol by staying silent while the other transmits because they don't know the other is transmitting.

Since the AP is in the middle of the network, the AP typically has to participate in the process of telling everyone to be quiet (protecting a transmission). So, the RTS/CTS exchange is a way for the client to tell the AP, "hey I'm going to transmit, please let everyone know" and the CTS is then sent by the AP to tell everyone else, "hey, be quiet while this other node transmits."

If that is clear, it should make sense that CTS-to-self is a way for the AP to protect its own transmissions from interruption. Since the AP is in the middle, it doesn't make sense for it to send an RTS to a client and then have a client send a CTS. This unnecessary overhead. It makes more sense for the AP to just say "hey everyone, I'm going to transmit, please be quiet" by sending a CTS. As I explained in the previous response, it may use these protection mechanisms for backward compatibility (other devices won't understand what it is about to say, and thus can't understand how long to be quiet) or if the network is seeing a lot of collisions (using a short frame that is unlikely to experience a collision in order to protect a longer frame that would otherwise be more likely to experience a collision). This second reason is why you could use these protection mechanisms in an 802.11g only network. I'll illustrate in the next paragraph.

These protection mechanisms help avoid collisions because of the way the protocol works. The protection frames are very short and unlikely to be interrupted. Think of a classroom. All the students are jabbering at will and the instructor is continually being interrupted because there are a lot of talkers. Thus, no one can hear his whole 1 minute speech, so he continually starts over. This is an inefficient use of class time. So, since he expects to be interrupted and doesn't want to have to repeat himself, the instructor starts by saying "shut up, I have something to say!" That is a low overhead way to get talk time. Then everyone shuts up and he can carry on, uninterrupted. When he's done, everyone can talk again, at will. The RTS/CTS and CTS-to-self protection mechanisms work a bit like this.

This and other similar topics are important parts of how the 802.11 protocol works. I'd encourage you to explore either the CWTS or CWNA study guides to learn more. There's lots of good stuff in there. :)

I'll add a bit of detail and points of clarification since I really like this kind of stuff.

- RTS/CTS is rarely used in 11g protection. It is mostly CTS-to-Self.
- AP's aren't the only device that will send a CTS-to-Self when in protection. All ERP-OFDM (11g) devices will send a CTS-to-Self (at an 11b supported data rate) before transmitting an OFDM modulated frame.
- RTS/CTS was part of the original standard, not just introduced with 802.11g. Their original job was to help deal with the hidden node problem.
- There is a value inside of almost every Wi-Fi header called duration. This is an amount of time that ALL devices must wait if they received it. An RTS and CTS frame is just a short way of getting that duration value over the air. If you wanted to get fancy, you could also use an ACK frame to do the same thing. There would be no difference in functionality.