2. The dog gets along great with people, even strangers and I take him every day to places full of people, noises etc to work on socialization. The problem is when he meets other dogs. He puts his tail under his legs and he is really afraid. Sometimes he even growls. What is the best way to help him overcome his fear and not to become aggressive towards other dogs?
When he is acting fearful, don't coddle him ie petting him saying it's all right etc. That would be telling him his behavior is acceptable.
Begin working with him, exposing him, at a distance, to other dogs. Avoid flooding him with large groups of dogs, could be overwhelming and cause even more fear. Avoid going in dog parks, possibly sit outside a distance away to begin with. If he reacts, tucks tail, growl etc, you are to close, move back a few feet. Play, work on obedience and just sit and watch the other dogs. Have treats and keep it happy. As he grows relaxed and focusing on you, move a bit closer and repeat. Play tug, let him win - confidence builder.
If you haven't started training yet, get started soon. It will help build the bond between you, help him trust you and aid you on handling him. A group class may or may not work for him, possibly with a panel to block his view of the other pups. Talk with the trainer about his behavior and history. Be sure the trainer is experienced with GSD. Focus on getting his recall, stay and watch commands solid.
Take a look at these links:
BAT Ahimsa Dog Blog
Behavior Adjustment Training (BAT) | Official site for BAT: dog-friendly training for reactivity (aggression, fear, frustration) by Grisha Stewart, MA
Look at That! A Counterintuitive Approach to Dealing with Reactive Dogs Dog Training for Dog Lovers Blog
Remember when working with him and walking him to keep the leash loose. You have to stay calm, what you feel travels the leash and he could react to your emotions.
This won't be overnight and may be frustrating at times