Rosie and our Tucker are just about the same age, and it sounds like they're at just about the same stage of training on all of the points you made. Loose leash walking with a flat collar is Tucker's biggest challenge too. When I take him on our daily 2-mile walk, I use a prong collar with him. He got used to that very quickly, and rarely pulls at all on those walks. It's a dream. He does get a little nutso when he sees another dog, but even that's getting better (we use the "leave it" command for anything he should ignore).
On the flat collar, or when my husband walks him, it's a totally different story. Tucker will pull-pull-pull until he's choking himself, and for no reason other than he can. What I've started doing with him is when he starts to pull, I turn around, give him the "let's go" command, and he'll spin and start walking in the other direction. I'll do the same thing again after a few steps so we're going in the right direction, and he's usually better after that. There's just a lot of spinning going on, and I'm sure my neighbors think I have some serious issues.
I keep reminding myself that he's only 6 months old. A baby. And with consistent work he'll eventually get there.