For Transaction, Block and Blockheader. This is a convenience so if you happen to have the buffer for one of these, you can make a new one like this: Transaction(txbuf); Rather than having to do this: Transaction().fromBuffer(txbuf);
...the hash is the usual hash, and the id is the reverse of that, which is what is usually graphically displayed by bitcoind.
Every object should have toJSON and fromJSON methods so you can have a reliable way to store and retrieve objects.