@NickODell Some bits like OP_CODESEPARATOR are historical (and the behavior removed because it was exploitable), some bits like SIGHASH_SINGLE are just plain wrong, and a lot of the transaction stuff is just strange for reasons only Satoshi can possibly explain. There's a diagram with some of the steps of SIGHASH_ALL on the wiki if that clears anything up for you.
en.bitcoin.it/w/images/en/7/70/Bitcoin_OpCheckSig_InDetail.png