When I say it comes down to knowing your heroes its knowing what skills and abilities make them (or you vulnerable). A Reinhardt usually loses to a reaper because reaper gets in too close with and his shield doesn't work a Reinhardt might counter by sticking by his fellow heroes so a reaper gets taken out before he can do damage or he might charge the reaper before he can do anything. Heroes don't necessarily rock paper scissors each other. the largest part for countering a hero is countering the person playing, for example, I won't stop playing Soldier: 76 because i keep getting taken out by Roadhog and his chains, I'll sprint around the team and hit Roadhog from the back or better yet coordinate and attack with my team.
While knowing your characters is all well and dandy some maps just aren't kind to some characters. Usually me and my friend can play Torbjorn on a payload map offensively and once we set our turrets on the payload that pain train never stops but we run into trouble on Kings Row because of all the corners characters can hide around and take out our turrets with. Maps can be unkind to certain characters, mostly to non-support characters as ,they don't need a map they need a character to support. Keep in mind your maps and game modes when deciding your character.
The last thing I want to talk about is play styles. Just so you know there is a wrong way to play a character, A Reinhardt that chases that Genji is not only a bad Reinhardt but also a useless Reinhardt because now your team is getting killed while you get and extra elimination. A good hero knows where they work are you harassing enemies to get them away from your team or are you wading your way into the enemy team soaking up all the damage while your team lays waste to the team killing you. The basic roles follow these set patterns Offense is harassing and killing, Defense is killing and damaging and setting up defensive positions, Tanks are getting shot at, and Support is keeping everybody alive long enough to pull this off. that's the gist of hero roles.Remember this isn't concrete each Character can be used in a variety of roles in a variety of situations and has their own play style. Experimentation is the key to figuring out hero roles and counters try new things and don't assume a new hero will fix things try all that you can with your heroes