One of the major behind-the-scenes changes in Blender 2.5 is in the way that scene data is accessed by different parts of Blender. Previously in version up to 2.49, there was no unified method for reading and writing this data, each tool did it their own independent way, with their own bugs and inconsistencies. This has been a limiting factor in more complex tool and interface development for several years, and has now been solved in version 2.5.
Blender 2.5 has a new data API (nicknamed 'RNA') for consistent data access between tools, which is used for:

Immediate benefits to users include:
In order to have a complete list of all data accessible via the Data API, there is now a new 'Datablocks' view in the outliner. It shows all blender data organised by data type, with a hierarchy of data connections beneath it, and provides UI controls to edit the properties in real time. Using this, it's clear to see how deep the data access goes, editing the locations of mesh vertices or keyframe control points, all from the same list view.
The Datablocks view can also be used to create 'Keying Sets' - groups of properties that can be keyframed together as a whole.