Factors that go into making a "good" catcher:
1. Knowing your pitcher
a. His strengths and weaknesses - pitches, locations, etc.
b. Ability to recognize what he's got that's working or not working that day.
2. Knowing the Hitters
a. their general tendencies, strengths and weaknesses
b. their recent trends - hot or not, what they've been hitting, whether they've been chasing certin types of pitches, etc.
c. being able to read the hitter - their set-up, their swing - tips that may indicate what they're trying to do or how they're trying to attack the pitcher.
3. Pitch calling: taking #1 and #2 into account, as well as factoring in the count and pitch sequencing. This is where catching is a cross between a science and an art form. The catcher is trying to help the pitcher get ahead, and stay ahead, in the count, and set the batter up to get himself out. But if the pitcher falls behind, then the catcher has to adjust the pitch call and sequencing to get the pitcher back in the count without giving the batter the pitch they're looking for (and being too predictable, to the extent possible). This is probably the area where there is the greatest variability - no two catchers are ever going to call a game identically, and a good catcher will never call two games the same because of the differences in the dynamics of each hitter, and each at-bat. You may have a hitter where the gameplan is to get him to chase breaking balls low and away, but how you get there can be accomplished in many different ways.
4. Target/Receiving/Framing - factors that can maximize the chances that the pitcher will throw the pitch where its supposed to go and maximize the chance that a close pitch will be called a strike.
I probably left something out, but I think this is a good basic summary of how a good catcher can help a pitcher. Of course, there are other attributes of a good catcher, such as pitch blocking and throwing, that impact the game in other ways.