Sorry for the last minutes comment.

It occurred to me that it might be useful that string-cursor-{forward|back} returns #f 
(or any other value that is invalid for cursors and indexes), instead of making it an
error.

That's because currently, if you want to know (string-cursor-forward s c nchars)
is safe, you need to check (<= nchars (string-cursor-diff s c (string-cursor-end s))).
This is more cumbersome than index, with which you can use integer comparison in
various ways---e.g. you can recurse with "next index" as argument, and just
stop when (>= next-index end-index).  With cursors you can't pass such
"cursor beyond the end" so you have to do the range check before advancing
the cursor and recurse.
(Think about the task like "search a string for character X, if found, cut the
substring until that character, then skip N characters and make it a new 
start position and recurse")

Additionally, I noticed that there's no mention that #f can't be a valid cursor
value in the current draft.  Cursors should be disjoint to #f, for string-contains requires so.