The big changes I found useful in 3.5 were that 3.0 had too many classes with abilities "front loaded", which is to say that you got most or all of the nifty class features in the early levels, often first. It prompted people to fruit salad their PCs, taking a single level in several classes for the class features.
D&D 3.5 stopped that sort of thing by spreading out the bennies over a number of levels.
Haste in 3.0 made spell casters broken by granting an actual extra Standard Action. That meant two spells per round. In a party with any number of casters, that became the single best party buff out there. Spell casters were over done to begin with, power wise, particularly at higher levels. Doubling their power made them critically broken starting at 5th level.
Polymorph Other in 3.0 (which became Baleful Polymorph in 3.5) was also broken. It did everything that Polymorph Self did, and it made the effect permanent. There was no reason for the spell casters not to be designed with everything in the mental stats (Intelligence, Wisdom and Charisma), then Polymorph Other themselves into a Stone or Fire Giant, or some other form with high physical stats. Hell, there was no reason for the entire party not to walk around in Giant form any time they were in the field. No duration limits, no drawbacks.
Finally, I liked the 3.5 Ranger class better. In 3.0 it was a weak option, with almost no reason to take it. 3.5 made it a viable PC class, and it needed that.
You can feel the seams in 3.5, where they tried to patch things from 3.0. There are references in there to limitations on spell effects, such as the mental shift from Polymorph, long after the limitation itself is gone. It really needed another round of proof reading. The system as a whole, 3.0 or 3.5 (or Pathfinder, for that matter) really needed more play testing at levels above 10. Over all, though, I think it is an improvement.