It's a cross-platform tool for building solutions. You can use the same CMakeLists.txt to generate makefiles for several different compiler platforms on several different architectures. This is handy if you want to distribute a library or utility as a cross-platform one.
This means you only need the CMAKE files to generate many other native builds depending on which compiler/architecture the end user is using.
If you're making your own projects, you need makefiles (if applicable with your compilers).
If you're compiling someone else's library, you will probably auto-generate your makefile with Cmake.
If you're making a library for someone else and you don't know which compiler they are using, you'll want to make the configuration so that someone else can autogenerate the makefile with Cmake.