Many articles on KMP mention that the failure function in KMP itself has a large number of applications.
One such application is finding the smallest string which when concatenated k times gives the original string(period).
But I could not find any other. What other problems involve the KMP failure function?
KMP computes the borders of all prefixes of a string, which are themselves a key notion in algorithm on strings. (Computing the border of the whole word itself is nontrivial, and KMP (failure function) is the standard for doing that!)
A border of s is simply any word that is both a prefix and suffix of s.
As you rightly noticed, an outstanding application of the ability to compute borders is the possibility to compute the smallest string w such that for some natural k w^k = s for a given string s. This is called the primitive root of s.
The reason for this is the duality between borders and periods of a string. A period of a string s is any string w no longer than s such that s is the prefix of the string wwww… For example, abc is a period of abcabcab. It turns out that there is a 1:1 correspondence between borders and periods of a word; in the above example, note that abcab is a border of abcabcab. In general, whenever w is a period of s, then the string that remains from s after removing w from its beginning (w^-1 s) is a border of s. Similarly, if w is a border of s, then the word that remains from s when you remove the suffix w is a period of s.
Periods are an important tool in analyzing the properties of strings. They are used for example in the algorithms for finding repetitions (runs) in strings; for an overview see this paper.