So, he's 10 months old. That's the time when they're royal pains in the neck as they're testing their authority with you and everyone around them. Your job is to tell them YOU have authority in all matters, and YOU are boss lady with everyone around the two of you.
How do you do that? You'll see it mentioned hundreds of times on this forum: NILIF: Nothing in Life is Free. This means your boy must accomplish some task, however small, to get what he wants. If he wants to go outside, he must sit by the door until you say he's allowed to leave. If he wants to meet a person or dog, he must sit off to the side quietly until you give the okay (which right now would involve no greeting at all). If he wants his food, he has to do something to get the food (sit, lay down, dance on two legs, you choose).
Everything now requires work on his part. Working with you thus gets him what he wants.
You're also going to work on the power of "no!". "No!" is now your word for whenever he doesn't do what you asked. And when you say "no", you're going to say it like you mean it. Say it like you're a cop telling someone what to do--leave no room for argument. If he refuses to listen to you, refuse to give him what he wants. GSDs want to please their leaders, and when they start to see you as the leader, "no!" makes them very submissive and apologetic. (You can find other ways to correct the dog, but I'd ask a trainer for that advice).
This will help assert your authority and start to cut down on some of his over-emotional reactions to dogs. In terms of addressing the reactivity problem, I'd hire a trainer. Until then, give the following a go:
1. Get rid of the harness and get a collar that will offer more corrective power: martingale or prong would work well. Research on how to properly use these collars, and that will give you more leverage and reduce his ability to pull you over. Harnesses encourage pulling (why do you think they put sled dogs and weight-training dogs in harnesses?), and we don't want to encourage that anymore.
2. Stop taking him to PetsMart for the time being. It's a crowded place with people and things everywhere, and crowded places are a disaster for reactive dogs.
3. Put as much distance between Charlie and other dogs as possible. Find the line where he stops reacting (i.e. stops focusing and waiting intensely). Make him sit. Do not let him get up. If he gets up, give him a strong "no!" and put him back in a sit.
4. When he sits quietly and the dog passes, praise him with great praise. He just won the lottery. You can give him treats, but praise works excellently when a bond has been established.
5. Rinse and repeat, moving closer over time. Only move close when he consistently shows he does not care about the dog moving by. Encourage him to look at you while he's sitting down.
But again, get a trainer to help you out with timing and body language.