I feel so behind / left-out of the Bitcoin phenomenon. I thought it was a fad a few years ago, but it seems as though it's here to stay and there are probably good opportunities for those who understand how it all works. I was wrong.
I want to start from the beginning and learn everything. What are the best resources for this?
If you're a programmer, I highly recommend trying to implement your own (toy) Bitcoin client -- just as a learning experience and not for general use or distribution. (Just be sure to advertise it as such if you put it up on Github). I've been involved with Bitcoin since early 2011 and am just now understanding the protocol in depth, having started to implement my own Bitcoin client.
You're best bet to do so is probably to just skip the reference client and its complex C++ implementation, and learn the protocol from the Python implementation [0], combined with the protocol specification on the Bitcoin wiki [1].
If Java is your thing, I've also heard good things about the readability of Bitcoinj, which is used for various Android Bitcoin clients. Just note that Bitcoinj implements SPV, which is not the full reference protocol. But it would still be a great start to learning about Bitcoin.
If you're not a programmer, there are a 101 different intro to Bitcoin sites. I think I've heard good things about the Khan Academy's intro videos, but I've never watched them myself. And yes, and Satoshi's original paper.
There are tons and tons of wiki and blog posts about bitcoin out there, but in my opinion the original paper is really good, if you have a technical background. I don't mean like crypto-expert, I think it's something the average programmer can read, maybe with a bit of googling. I usually wouldn't recommend a paper, but I found it really clear and straightforward. Maybe it's because I already understood bitcoin pretty well, but here it is if you want to take a look: http://bitcoin.org/bitcoin.pdf
I want to start from the beginning and learn everything. What are the best resources for this?