I've read many different guides and tutorial but none seem to go over this topic. Please tell me.
whenever do you need one ;)
bangs are good for making a theme dynamical. it's a little like javascript for html. with bangs you can change the appearance and functionality of the theme on the fly without any recycling. bangs also give you the ability to control the functions of your modules (like you could make a button which gathers all windows to a certain desktop) or even programs (winamp for example).
just download some themes and see how they use bangs and if you're making your own theme, you'll understand when to use a them :)
Bangs can display a popup or can move your system tray from one side of the screen to the other when executed. Every module has it's own bangs. Read the docs for these modules to see what their bangs can do.
Use bangs wherever something can take an action, which (usually) implies that it can take a bang as a parameter. Think of bangs as functions that were made to tie things together. The syntax where you 'plug in' bangs are dependent on the module(s), but the end of such a configuration line of text is usually a bang and any of its arguments. These places where you can 'plug in' a bang let you do something as a result of some other event.
There are even bang modules, which only provide bangs for you to use elsewhere to control something. For example, geekamp is a popular bang module with bangs to control winamp2.x. Many themes have winamp controls in the form of shortcuts which have geekamp's bangs tied to them. And many users define hotkeys with these bangs for keyboard control of winamp at any time.
Visual modules usually take click actions, just look at any theme's step.rc and you'll figure how to use bangs eventually.
You can also call bangs directly (through a command line module such as lsxcommand, or using Maduin's !.exe or azathoth's bang.exe. This is useful for when you are testing bangs and such or when theming, or if you like typing bangs for some reason :)
I've done some mucking around, and I can safely say I understand bang commands. Thanks for you peoples help.