How can I quickly spam charge attacks?
There are several ways of doing charges.
Easiest, of course, is to just hold back/down and let it rip after 2 seconds.
The harder way, is to be charging while doing a jump or attack combination and then letting it rip at the end, which is what you are supposed to do with charge type characters, such as guile and blanka. Do not be ultra defensive! Keep them guessing with your pokes, and if they make a mistake, combo into it.
While you will never be able to spam as fast as Ryu or Sagat, there is a way to minimize your charge time via buffering, see this video for a good explanation.
Short description for those who can't, or doesn't want to watch the video:
Instead of doing a back-2seconds-forward sonic boom, you do a back-2seconds-forward-back sonic boom, this allows you to be charging for your next sonic boom while your current sonic boom animation kicks off, and using this technique will allow you to add multiple sonic booms into your combos more effectively.
Remember that you can charge not only holding back, you can hold diagonals down-back or up-back, so you can charge while defending (down-back) or while jumping back (up-back).
Buffering is your answer as yx01 said, but let I throw some tips against shotos (who spam a lot of fireballs). I had a lot of problems with this in the past.
I'm not a Guile or Street Fighter expert, but versus shotos, don't enter always in a fireball war, you are in a disvantage. You can always do a neutral jump (up) and let him get tired. Try to move a little closer to you opponent and let him think that you can jump the fireball and hit him. But don't jump always, just show to him that you can do it.
Try to do a neutral jump and hold back after the jump (you are buffering), when you touch the floor, press forward and punch, sonic boom, then walk forward (show no fear). Get ready for another fireball. If he throw another, you can jump and hit him or defend. If he block or the sonic boom hits, you can follow a high punch to bug him. If he jumps, you can use crouching high punch to counter or jump and air-throw.
Keep a good distance for you not to him and poke him to KO.
In (Super) Street Fighter 4 you can use the focus attack (medium kick + medium punch) to get closer as another option. Remember to cancel the focus attack with a dash (forward, forward) after absorve the fireball.
No, don't try to Fireball game with Guile on Ryu. You are on the losing side.
You may fireball one or two with Guile, but vs Ryu fireball, you just need to neutral Jump over it, once a while. Ryu fireball is much faster than you imagined.
Guile SB is not an offensive tool, you should not use it offensively like Ryu. the SB is just a move for you to trick your opponent to make mistakes. Like SB then follow with a hard punch if they try fireball war.
and to your answer, the moment Guile squad down, you should be able to fire second SB.