The Byzantine pointer usage,[...]
Any "Byzantine pointer usage" is not the fault of the language, dammit! It is, purely, simply, and solely the fault of the programmer!!! who doesn't know how, when, or why to use pointers.
Don't go blaming the language for the faults of the practitioners!
There is no doubt that you are "[...]not exactly stupid when it comes to learning new languages, either.". I'm using a perfect example of that right now. But for you to make a remark like that is so unlike you so as to make me believe that your login has been copped by someone else. There is nothing wrong with pointers. There is nothing wrong with pointers in C, nor in C++, nor in Objective-C, nor in assembly, nor in any other computer language that allows them. IMnsHO, computer languages that don't allow them are brain damaged, as there are some things you just can't do without them. Nowadays, there are languages that try to make you believe that there are no pointers in the language; they try to "hide" pointers from you, making them with names like "references". These are similarly brain-damaged, for the simple reason that they make you play hide-and-seek with the address of an object. I wouldn't want to write an OS in such a language.
If you want to decry the (ab)users of the tool, fine. I'll join you! But don't decry the tool itself.