I am familiar with the star notation, where for example in gfortran the declaration real*8 means real(kind=8), although in the former the 8 means the number of bytes, while in the latter it is a compiler specific kind designator (in gfortran they happen to both be 8 for double precision).
My understanding is that character*10 means character(len=10).
From experimenting with gfortran it seems character*(*) means the same as character(len=*), which is the same as character(*), in other words, the extra star * in character*(*) is superfluous. Is that the case?
From further experimenting, character(*, kind=c_char) is allowed, but character*(*, kind=c_char) is not, which leads me to believe that character*(*) is a workaround for character** (which does not parse), in other words, it’s the length of the character, size * bytes. It is just a coincidence that the more modern approach is to use character(len=*, kind=c_char) and that it looks similar.