The string expressions can contain any of the objects specified in the notes for StringExpression.
In each of the results returned by StringReplaceList only one substring has been replaced.
StringReplaceList goes through a string, testing substrings that start at each successive character position. On each substring, it tries in turn each of the transformation rules you have specified, returning a result for each one that applies.
StringReplaceList in effect carries out a single step in the evolution of a multiway system.