I find it interesting that a lot of the fodder for Ash's ineptitude is judged to be the lack of Pokémon variety and his inability to train Charizard. If you lot remember, Gary had a bevy of Pokémon but he didn't, for example, finish the preliminaries at Indigo Plateau, whereas Ash did (before falling to Richie).
As for Charizard, I believe it simply grew to resent being hauled around with Ash, probably due to its unhappy memories with Damion. As a result, it pretty much went on its own accord, listening to Ash only when it judged it to be in its own interests. As a result Ash had to give it up in the Johto series, and I suppose it enjoys the company of other Charizards more than Ash, even though it still had the decency to come to the rescue when Entei and the Unowns went berserk. You should also consider that it evolved rather early in Ash's career, the first of his Pokémon to do so besides Butterfree (episode 43 and then episode 46), so I guess it could be a matter of Ash having a tendency to abuse it and the level of maturity gained in the process.