Programming in C

In my opinion, the first and last book you'll need for learning C is "The C Programming Language" by Kernighan and Ritchie. Like the C language itself, the text is small, simple and clean. A classic.

2nd that. I would add, however, that K&R is probably beyond the comprehension of most C programmers and 99.99% of the arduino community. Without years or programming, making mistakes and tracking down those nasty bugs, it is not possible to appreciate it fully.

what were they thinking, anyway?

I would add to that list the (ab)use of int.

As I said above, an attempt at a "simplified dialect" would be the most generous description I can think of.

It may be more complicated than that. Arduino is meant to be used by people who are new to mcu, and likely will not utilize the environment for complex tasks. As such, a simplified dialect (dumbed down version of a fully C-compliant implementation) likely is more productive for its intended audience / niche.