Something I've been somewhat surprised at playing with building a CPU in VCB is just how fundamentally... simple a CPU is. I've grokked a lot of single components (ALU, memory cells, etc.) for a while, but always assumed there was some 'magic glue' that turned those elements into a system that could perform useful work over time, but there's really not. Once you have a clock loop and the ability to select inputs and outputs on buses, you're golden. Everything else is just tinkering on the side.
Obviously this doesn't apply so much to modern CPUs with deep caches, atomics, superscalar stuff, speculative execution, etc. I'm more talking about low-power embedded chips or older things like the Z80 or early ARM/Acorn chips.