Well, like in English there are different ways to say to use (to utilize, to make use of, to employ, to apply etc.), there are also several ways to express the same thing in German.
Actually, this is a tricky question. Each word can be defined (more or less precise) as:
To use something (abstract or concrete object) in order to achieve something.
I can hardly make up a real difference between those words, although in many contexts I can say for sure which word of them is applicable or not applicable. I will try to summarize the important but though subtle differences.
You use benutzen when using concrete objects (Zahnseide benutzen, Klopapier benutzen) but it's also possible when talking about abstract things (Benutz deinen Verstand). I guess this word is most colloquial. In some regions the word is written and pronounced with an ü instead, i.e. benützen. You can often just use nutzen and benutzen interchangeable (Ich nutze[=benutze] das Auto) but, for instance, when talking about using a service or accepting an offer you can only go with nutzen:
Wir sollten das Angebot nutzen.
So, benutzen is more in sense of to utilize an object and while nutzen can connote this meaning as well, it often means to take an opportunity. (Das schöne Wetter (aus)nutzen, Hilfsbereitschaft (aus)nutzen). Note that ausnutzen mean to gain an advantage in an often unfair or dishonest way, i.e. to exploit.
Verwenden is often interchangeable with benutzen. It appears to be somewhat more formal.
Zum Reinigen der Zähne verwende[=benutze] ich Zahnseide.
Beim Kochen verwende[=benutze] ich ausschließlich asiatische Kräuter.
Though technically possible, in some contexts it may sound odd to use verwenden instead of benutzen:
Benutz[Verwende] deinen Verstand.
You say gebrauchen when something appears useful.
Ein Messer kann man immer gebrauchen.
Mir ist kalt. Ich könnte eine Jacke gebrauchen.
Ich könnte etwas mehr Geld gebrauchen.
Thus–to take again that example–when you say Gebrauch deinen Verstand, you put emphasis on using it because it can help you a mess.
Anwenden means to make use of something (abstract or concrete) in order to achieve something. Einen Trick anwenden, Gewalt anwenden.
Bisher bin ich noch nicht in die Situation gekommen, dass ich Pfefferspray anwenden[=gebrauchen] musste.
Note, here again gebrauchen means to be useful while anwenden means to make use of it. Thus, Ich habe das Pfefferspray gebraucht means that it was really helpful to me that I could use it, while Ich habe das Pfefferspray angewendet just means that you made use of it. You can also say Ich habe das Pfefferspray benutzt/verwendet/genutzt, which again just means that you made use of it.
As you see, there's a huge overlap in sense and sometimes just little or no difference at all. In some contexts you can use all these words, in other contexts some might not be applicable. It's impossible to put all this into words. So, in the end, you have to gain some language feel to make out the subtle differences, in order to, eventually, use the words appropriately.