Game Mechanics
Charizard's strongest points are its special attack and speed capabilities, though its physical attack is also quite formidable. As a fire/flying type, Charizard will receive a Same-Type Attack Bonus (STAB) on both fire and flying type moves. For maximum versatility, consider arming Charizard with both kinds of moves. To maximize Charizard's efficiency as an all-around attacker, its other two moves should be of different types to deal with the widest range of enemy types possible.
In-Game
In the main "Pokemon" titles, Charizard relies more on its attacking power and less on setup and stat boosts. In the course of normal play, moves like Belly Dance have less utility on a team and less strategy is required so players can pick whatever attacks they like best. Flamethrower and Heat Wave are good choices for a high-leveled Charizard, as both moves pack quite a punch and have high accuracy.
Physical Focus
Charizard's physical attack stat isn't its strong point, but is certainly workable depending on your strategy. Teach Charizard Swords Dance to beef up its attack significantly, opening your matches with this move. Teach Charizard Fire Punch to capitalize on its fire-type STAB, while Earthquake or ThunderPunch will help round out Charizard's usefulness in battling a variety of different types. ThunderPunch makes Charizard more useful against water types, as well as fellow flying types, while Earthquake allows Charizard to deal damage to Rock types. Air Slash is another option, depending on your move preferences, though it may not be as useful. If you aim to use Charizard as a physical attacker, a Jolly nature is useful to help with speed. A Lonely or Naughty nature will help with Attack, but at a cost to Charizard's defensive stats, which are already less than ideal.
Focus on Speed
Dragon Dance boosts Charizard's speed stat, allowing it to outspeed nearly every opponent thrown at it. Earthquake and Thunder Punch are useful moves, once again, though Fire Punch should be traded out for Flare Blitz in this move set. The downside of Flare Bltz is that it deals damage to Charizard when used, but its increased attack power should make it worthwhile.
Special Attack
Charizard possesses a very high special attack without needing to add any stat boosts. Using Charizard as a special attacker without any stat boosts can be dangerous but highly effective, and deadly to unprepared teams. Charizard's naturally high speed helps it against most Pokemon, and the ability Blaze causes a significant boost to Charizard's fire-type attacks when Charizard's HP falls under 33 percent. Teach this Charizard Fire Blast for its power and to utilize the STAB, as well as Blaze if Charizard's HP is too low. Air Slash also benefits from the STAB, and though it won't gain anything from Blaze is still a powerful move to have in Charizard's arsenal. Teach Charizard Roost so it can recover its HP. Its Hidden Power is grass-type, so teach Charizard Hidden Power to give it a chance against water-type opponents.