It's not a dumb question at all, and the answer is of course "it depends".
A string in some languages (C for example) doesn't actually exist a data type.  "Strings" are represented simply as a fixed length buffer which contains a series of 1 or more bytes that form the string.
The problem then is how do you know where the "string" ends?
The solution was to use zero as a string terminator, and is where the "SZ" acronym comes from that you'll see in various places including registry types.
KiXtart has the same limitation, so Chr(0) cannot be a string or part of a string because it terminates the string.
Other languages include the string length as part of the object, so there is no need for a string terminator character and the problem is avoided.
The answer to your question about the type of variable is in this case probably a "byte array" - which KiXtart cannot handle natively though you can still hold it in KiXtart variable.
Do you think the CByte() and CBool() have any use?
Yes. Probably 
Routines which convert byte arrays to and from KiXtart arrays of integers would definately have been useful to solve problems raised in the past with things like internal representatin of dates, numbers, network addresses and SIDs.