I don't know Objective-C, but roughly:
C is a relatively low-level language (as things go these days) where you manage the memory, threads, etc. yourself. You're typically working directly with variables, pointers, blocks of memory, etc. There's a type system, but it's more of a gentlemen's agreement than binding law.
C++ is (roughly) a superset of C that adds in a bunch of new features, most importantly classes. This allows you to create data types that have logic associated with them and automatically manage their memory to some degree. The type system has been extended to handle classes and their interrelationships.
Almost any non-barbarian C program is also valid C++.
C# is a completely different animal - while the syntax is similar to C/C++, the execution environment, memory model, type system, etc are different. Memory is garbage-collected rather than managed by the programmer, and you're abstracted away from the details of memory, object representations, addresses, and so on. C# and its environment will also do much more "magic" for you behind the scenes than C/C++ will, and its common libraries are more extensive than those languages'.
That's my very brief summary anyway.