I will speak from the perspective of a casual desktop user. So first of all if you decide to try NixOS be sure to have several spare hours or better days for this. You are going to learn a new philosophy and the basics of a whole new programming language. The distinctive feature of NixOS is its declarative package manager. To install a package - and indeed the operating system itself - you’ll first need to write or get a recipe for it. Then call the interpreter to process the recipe. Somewhat similar to make or brew files but distinct in the underlying programming language and arguably more suitable just for this purpose. There are of course tons of such recipes in the Nix repository, which should make the beginner’s life easier, but still…
So what people like about NixOS is that the declarative package management allows for 100% reproducibility of a system state. With the same recipe you will always get exactly the same system. For example, when using an ordinary package manager, it may happen that some packages get upgraded, some do not. If package A of version 1.1 requires package B minimum version 1.2, you may actually end up in one of several possible states, where after upgrading package A v1.0 to v1.1 you’ll have package A v1.1 + package B v1.2 or package A v1.1 + package B v1.2.1 - depending on what’s available in the repository. An ordinary package manager will get just try to get the most recent version that is available. With Nix, you will specify package A v1.1 + package B v1.2 in the recipe and that’s what you will always get. You can also have several (dozens, thousands) different system states installed simultaneously and they will not interfere with each other. Moreover, you’ll be able to straightforwardly switch between such states. This isn’t something that can be easily achieved with an ordinary package manager.
You may now see where and for whom this is really useful - automatic deployment, software development and continuous integration testing.
If you are still interested, I’d recommend you try Nix package manager first. It’s available for all Linux distributions and also for MacOS. So what’s good about Nix package manager is that you can have exactly the same set of packages on MacOS and Arch Linux. Think of NixOS as a superset of all imaginable Linux and many Unix-available packages and system states, in which Ubuntu 16.04 is not a distinct Linux distribution but just one of the many possible NixOS states. Theoretically, it’s possible to have Debian and Fedora (which are just fancy names for a specific set of specific packages) installed within the same system.
I personally do not use NixOS nor Nix package manager myself.