Do I understand correctly that this function returns drive letters? If so, why does GetLogicalDriveStrings give a series of null-terminated strings rather than a series of characters?
Because it returns strings that can be used as input for functions like GetDriveType, for which the input should be in the form "c:", not just "c".