It's up to you, as a developer, when your errors will show themselves; unit testing is one way, and neat little tools like Toady's arena are another. Very simple errors will be caught by a compiler, but they'll rarely go unnoticed by a capable programmer for long. I don't think I've lost more than an hour or two in every hundred to tracking down bugs caused by typos (in languages without declarations) and I've certainly gained more than that by not feeling constrained by declarations. It's all a matter of style and self-discipline in the end, even in C. (It's amazing what you can get away with.)
As for C and C++, I personally recommend C -- not because it's simpler or smaller than C++, but because it's a completely different language. When you do learn C++, you just keep that in mind. The similarities are all superficial. Bjarne Stroustrup has no more right to declare his language the one true successor to C than anyone else has (although Ritchie, who arguably has that right, has now written Go -- just saying.) And it doesn't matter, either. C++ stands on its own merits, for its own purposes. I just prefer using C for the guts and an embedded language like Lua for most of the program logic (I've tried several, and I'll try Chibi-scheme soon).