In C, strings are just arrays of characters. To know where the string ends, a '\0' character (the character with the character code zero, called the NUL character in the ASCII alphabet) is added after the last character.
strncpy copies at most the number of characters given by its third argument, and there is no guarantee that the copy will be NUL-terminated. Back when strncpy was designed, storage was more limited than today, and even a single byte was important. Since if one knew that, say, 14 characters was the maximum for a certain string, one could store a 14-character string without the terminating NUL character.
So, when working with strncpy, if the string copy is to be used in other C functions, such as strcat, one needs to add that missing NUL character, in the cases strncpy didn't copy it.
It might work anyway, if there happens to be a NUL character in that place from the start, but that is not something that you an rely on, or that the compiler will help you with.