You definitely don't need to learn C first or ever really unless you got some specialty task in mind. To break down the different C's
C - Is a rather old language. There is little reason to use it outside from maintaining legacy code or when you're options are constrained like when programming microchips. The main legacy of this language is its syntax - many languages are considered "C-like" like C# or javascript, beyond syntax though, they don't have much in common.
C++ - Contains everything C has and then some (which is the main reason C is mostly obsolete). Also started out a long time ago but unlike C, its development is alive and well and it is very much a modern language. C++ is one of the highest performance languages, that combined with its large codebase and platform independence makes it probably the most versatile language out there. Learning C++ can be difficult since you need to get a handle on managing memory yourself from early on but once you got that down all you need to do is skim API references to build anything. There is of course more to learn but at that point you can start working on some real things and learn on the job. The meta programming capabilities of this language go deeper than most so the skill ceiling is very high but so are the rewards. If you read various articles on "which language is the fastest" or whatever, you might get the impression that managed languages like java or C# aren't that far behind but this isn't true. For anything more complex than looping a calculation or whatever, for algorithms that do some kind of specialized computation, C++ can be optimized to be hundreds, if not thousands of times faster. Access to hardware features like instruction sets on CPU's or direct manipulation of RAM or hard drives is hard to beat.
C# - Isn't really a "sequel" to C like C++ but rather a completely different animal with basic syntax very similar to C. Its a managed language which means it trades speed for convenience, both in developing and deploying. The main advantage of C# over C++ is that its quicker to develop from scratch to something real because
a) its just generally easier
b) .net library is more extensive than std(of c++)
c) deployment is pretty much plug'n'play on microsoft platforms ranging from smartphones to computational farms.
C++CLI - Is a bridge by microsoft between CLR and C++, its essentially C++ with the ability to manipulate managed objects. Its not really a language that should be used on its own (all though, you can) but rather a tool for efficient interop between the languages. This is useful since with it, you can for example quickly prototype a program with UI and whatnot and replace performance critical components with c++ later. The syntax isn't terribly complex compared to c++ but considering the complexity of both combined its pretty nightmarish.
If you're serious about programming, you'll probably end up learning all of them anyways, along with a bunch of others. C# is likely the best place to start.