Any special reason why they put the length after the pointer? Or is it just a coincidence?
The Slice is just an address of memory chunk combined with the length of that chunk. That's somehow better than "C strings" - that are just pointers and so you need to do some computation if you need to get length of the string. Such C strings have too many drawbacks - in particular strtok function that modifies input string (that shall be read only all times).
Wrong. It will be pointer-to-pointer.
Reinterpretation (to treat struct as a pointer to C string) is only possible if you have something like this:
struct BSTR {
size_t length;
WCHAR chars[N]; // N is length + 1
};
and you return pointer to chars[0]. This is so called Basic string - BSTR is a WCHAR* pointer to memory location prepended by string length field.