1, 2. Grapheme clusters are not normative in Unicode, they can be tailored for specific languages. There's a default cluster finding algorithm but it's not suitable in all cases. There's no "one size fits all" approach.
3. Forward and backward are likewise language and tailoring dependent because they depend on graphemes. There may also be application-specific tailoring such as the handling of combining marks, in some scripts "forward" and "backward" are not clearly defined.
Be careful what you wish for. Unicode strings are fucking complex. UTF8 double so.
For example which of the four Unicode character normalization interests you most? Or you need grapheme clusters? Or you need code points? Or byte values?