I think the man page is perfectly precise. Let's ignore the ..._l functions and locales.
The strcasecmp compares only null-terminated strings. It will run through memory until it finds a zero. That's what the first paragraph in your quote says.
The strncasecmp will stop reading the string when it finds a zero, just like all str... functions. Again, that's what the first paragraph says. But it may also stop earlier, when reaching len characters. That's what the second paragraph says.
Now, does that mean that you have to null-terminate your strings? If you use ONLY strn... functions, and you carefully adjust all your strings to be long enough, or equivalently carefully adjust the len arguments to all the functions to be the real length of the strings, then you really don't need to put the zero characters into memory. I think such a design might work. I also think it would be insane, crazy, stupid, criminal. Or perhaps just not really idiomatic C, and not really that bad. But honestly, if someone wants to not waste the space for the zero, and also make string processing more efficient, they should stop using the C-style string libraries, and use something better. There are oodles of libraries that make string a first-class citizen (not just an array of bytes or characters that's terminated with in-band terminators, which can occur at any byte offset which makes processing on modern hardware inefficient). My favorite way of doing it is with string objects that are immutable and store their length explicitly in an integer counter in the object. But to each its own ...