For iterated prisoner's dilemma, you need the game to be infinitely long, meaning neither player knows when it will end. The moment either player realizes when the game is going to end, the game reverts to a regular prisoner's dilemma, and the first player to betray the other will win. The last round has no benefit for playing a Nice strategy, so you need to stab before the other player also realizes the game is going to end.
Yes, that's what I'm saying. Whether it applies to society or not depends on how often you have repeat interactions with the same person. For example, in a big city where you can expect to never run into someone again, I would expect people to favor Betray over Cooperate. Whereas, in a small village where you can't escape the people around you, I would expect people to favor Cooperate.
I’m not sure it requires perfect information, just accurate recent information.