str is "the null terminated C string which LE uses", it's not the same as char*, although it might be currently similar.
At the moment it's also unsigned char*, since not all C++ compilers work with signed chars for strings. In future str might be also unsigned int*, if there are some multibyte string functions. The whole point of declaring your own types is that your code stays compatible with all current and future OS and hardware.
LE uses also flt instead of float (which is used as "the floating point resolution which LE uses for GPU floating point numbers"), since GPUs might soon be all 64-bit, so you don't have to change any code then either, as the headers will then have flt defined as double.
Note that for pure mathematical functions you should always use double, as it's about twice as fast as float. bool is also twice as fast as int.