The Tag API should be used instead. These features will be removed in a future release.
A data object is basically a Map wrapper. A DataContainer is an object which contains a Data object, there are multiple containers such as Instance, ItemStack, Entity, Block (in a particular way, the data object is specified when setting a block).
Basically, it is used to link values to an element of the game.
Data data = dataContainer.getData();
int test = data.get("test");
A SerialiableData object can, as the name imply, be serialized.