IInspectable's answer is factually correct, but a little more context might help as well...
C++/CX (a.k.a. the Visual C++ /ZW
switch), Windows Runtime Library (WRL), and C++/WinRT all do basically the same thing: Provide a mechanism for calling "Windows Runtime" style APIs & types from C++ and for authoring "Windows Runtime" style APIs & types.
The OP question gets to a more fundamental question: What is the point of Windows Runtime APIs?
The original Win32 API was designed for a native code world, and most programs were written in C or C++. The Component Object Model (COM) was created as a way to handle runtime versioning (and many other features) using the same basic Application Binary Interface (ABI). C++ is a more natural way to use COM, but you can still technically use C through various macros and what not.
.NET and other managed languages came along later, and use a different calling mechanism. You can use native interop to get to Win32 or COM APIs, but they generally don't work in a very "C# friendly" way. Various 'wrapper assemblies' have been created to provide a more C# natural way to access fundamentally C/C++ APIs & types.
With the growth of the Internet and in particular the Worldwide Web, another class of applications are written using HTML5+JavaScript. They don't have any specific access to Win32 or COM APIs so special modules & libraries are written to cover the functionality gaps.
SO given all three of these major approaches, "Windows Runtime" style (WinRT) is an approach which combines the features of COM with the reflection-rich metadata of .NET. The idea being that an API could be written once and be usable by C++, C#, and HTML5+JavaScript.
Of course there are a lot of issues with using an API beside just being able to call the ABI, and each of those language paradigms are quite different, but from systems programming view that's the point of it all.
There is also a UWP ("Universal Windows Platform") that uses Windows Runtime APIs which itself has three basic 'appmodels': XAML, DirectX, and XAML+DirectX. These are the kinds of applications that can make heavy use of C++/WinRT if they are written in C++, but you can also use Windows Runtime APIs from Win32 desktop apps.
WRL is really "ATL 2.0" and was the first attempt at a solution for C++ interop with Windows Runtime APIs. You can use it to consume and author Windows Runtime types but it's a fair amount of manual work and not documented publicly very well. The primary utility in Win32 desktop applications is the Microsoft::WRL::ComPtr
smart-pointer.
If you want to know why C++/CX exists, see this blog series. It was intended to be an easy-to-use model for C++, but it's often conflated with Managed C++ (it uses the same reserved keywords, but is not at all related to Managed C++ or .NET) and not supported by other compilers.
If you want to know more about the general reason for C++/WinRT, see this MSDN Magazine article. This is intended to be a much more C++-friendly way to use Windows Runtime APIs, is portable to other non-Microsoft compilers, and is increasingly being used both internally and externally for Windows Runtime development. It does require C++17 language features and therefore pushes hard on the quality of your C++ compiler.