Both nixOS and Guix are different to 'regular' distros in the way that they are declarative: there is a file that describes the full OS: every user, every package, every system service, where the bootloader goes and so on. The main idea is that you can take that file, nuke your hard disk, reuse it and you'll have the same OS byte by byte. This concept of reproducibility is not only very comfortable, but has profound ramifications in security (you know no compiler or library has been tampered with malware) or science.
But it goes deeper: Since the OS is described by a single file you can roll back to a previous version if your file is hosted on git (both OS manage this transparently without the need of a VCS). Users can have their own 'local copy' of that file with their own programs, including their own libraries with different versions. You can have different files as 'profiles' (one for work, one for personal projects, one for gaming) you can activate at any time when you want to switch tasks, or you can try your friend configuration on a chroot or isolated environment on top of your own system.
The main difference between nixOS and Guix is that guix uses guile scheme as configuration language for that particular file. I have plenty of '(packages (if is-laptop acpi)...)' entry on my own files.
guix shell is just a way to create a temporary environment to try something quick without polluting my OS. For instance, if I want to do some hacking on python2 I would do 'guix shell python2' and it will open a shell for me with python2 without changing my python3 binary and python3 libraries on my main system.
BTW you don't even have to change your whole system, both nix and guix can be installed on top of 'regular' distros (google 'guix foreign distro', which is the way I manage my rasperry pis).
There is way more than all that, I definitely encourage everyone to give it a try, it's a mind bending new way to use a OS.