WaveHC: Filenames from SD in array

With this example, would it matter if the NULL is on index 12? Or could it alway be on index 15?

Nope.

And would the room to spare matter for strdup() (since strlen() cannot be used as a second param there)?

strdup() allocates space for the string (NULL terminated array of chars) that is supplied (so, it knows the length), copies the string to that space, and returns a pointer to that space. So, if the input string is in an array of 16 chars, but only uses 3 of them, the allocated space will be enough for the three chars (and the NULL). So, no, the size of the input array doesn't matter.