I'm afraid I found this a rather confused discussion of whether C will teach you "how the computer works". Yes, C is designed for an abstract machine -- all programming languages are, with the arguable exception of assembly language. Even with a language that perfectly modelled your CPU, you wouldn't learn "how the computer works" because the programming model presented by the CPU is itself an abstraction.* What's more important to my mind are the two major divergences between the hardware C was designed for and modern hardware, viz:
1. Massive changes to relative speeds of the memory hierarchy, and in particular the increasing divergence between near-CPU caches and system RAM. Nowadays it's often cheaper to recompute something rather than store it in memory. C is reasonable about letting you reason about this sort of thing, though, and
2. A major and increasing focus on parallelism for performance, which C is really bad at. Taking advantage of parallelism in C, particularly heterogenous parallelism such as clusters and GPUs, is a real pain. Classic example: the PS3 "Emotion Engine"; more modern example: graphics and physics coprocessors and CUDA. At the other end of the spectrum we have languages like Futhark where your code will be equally happy on a CPU, GPU, or both.
Compared with these major issues the differing size of char, say, is kinda irrelevant. Yes, CHAR_BIT >= 8 is not how the computer works, but that's not really a fundamental issue in the sense that -- well, in the sense that you can quite easily learn C thinking that CHAR_BIT always equals 8, and then update your knowledge relatively quickly. It's a small and modular piece of knowledge in the same way that, for example, updating your mental model of programming to include parallelism is not.
* This seems like a trivial point, but it's not -- actually understanding what's happening with your program may involve understanding DMA, the way buses are organised on your system, the way IRQs work, cycle timings, and on and on. The best you can hope for at the PL level is to have a reasonable high-level idea of what the CPU (or at least a single core) is actually doing, and C is still relatively good at this.