1v1 is only somewhat about counters, there are some characters that are just better at 1v1. Mei, most flankers, Pharah, anyone with stuns or slows, they'll be able to pick other characters apart. Of course the game in't really about 1v1. The majority of matchups aren't based on character abilities but rather on archetype; for example Reaper counters all tanks, Winston counters all supports, ect. The remainder tend to be based on ability quirks for example anyone with a beam countering Genji. There definitely is a rock paper scissors chart but it couldn't be drawn very readibly.
A much better way to think is about what your team needs. A good character pick at the right time is pretty much "making your own luck". Here's my rules for Overwatch team comp:
You need a healer, and a barrier tank (Reinhardt, Zarya, or Winston), period. In general you want a sniper (Widowmaker or Hanzo, Junkrat can replace a sniper provided you have a Pharah counter) however multiple characters who can fire in straight lines can together replace a sniper (Zenyatta, Mei, Soldier 76, McCree if and only if you have amazing aim). If you don't have direct fire weapons your team can't handle rooftop or flying enemies. A tank killer is always necessary but there are so many good tank killers you'll probably have one naturally (Reaper, D'va, Bastion, anyone with high and damage + bullet spread really). Then, finally, you need at least one character who has a mobility ability and can operate independently (not necessarily a flanker; for example Hanzo fills this role).
From there, the remaining few players have a great deal more freedom as to how to pick. The only real rule is that you need a strong "frontline" of heroes that can stand together and fight, anything else goes. Solid but unnecessary heroes like Mei, McCree, and Roadhog are generally picked as part of these "wildcard" heroes. But nothing is stopping you from doubling down on one of the other roles; a Zarya can work fine even with a Reinhardt, a Junkrat can fit on a team that already has a Widowmaker.
And then, of course, most heroes are better or worse in different modes. This should be pretty obvious after playing the hero for a few games.
Examples:
Good KoTH comp: Zarya, Zarya, Lucio, Genji, Reaper, Soldier 76
Bad KoTH comp: Genji, Genji, Tracer, Hanzo, Widowmaker, Roadhog
Good attack comp: Zenyatta, Reinhardt, D'va, Pharah, Hanzo, Tracer
Bad attack comp: Bastion, the dwarf, Junkrat, Tracer, Widowmaker, Hanzo
Good defense comp: Mercy, Reinhardt, Mei, Junkrat, the dwarf, Bastion
Bad defense comp: D'va, Tracer, Tracer, Junkrat, Genji, Roadhog
Anyway, the point of this exercise isn't to tell what your teammates need, its to
From behind a shield, using junkrat's bombs, very very carefully, or you could do the usual pub way and attack it when its shooting one of your less cautious allies.