firm is used when speaking about the texture and density of something. imagine putting your hand on a pillow that doesn't sink it. if it doesn't sink in, you call it firm, unmoving, solid. tough, to me, is more of somthing you would use to describe someone or a situation. imagine a man who isn't afraid to fight people all the time. he's tough. or if you're doing math and you get stuck on a problem you can't solve. that's also tough. so in my opinion firm is more material and tough is more situational or objective.
anyway, a firm girl could mean she's strong in her emotions and aspirations. her goals are unmovable. a tough son could mean he's physically strong, or he is not obeying. like he is hard to deal with.