Зачем разворачивать строчки, если можно запустить цикл сравнения в обратную сторону.
Как и сказали, странно видеть вывод в cout в "утилитарных" функциях. Логично было бы возвращать эти данные функцией (в кортеже/паре или своей структуре).
Скорее всего алгоритмическая ошибка: если загадано 1223, а пользователь ввел 92227, то он угадал одну или две цифры? Наверно две.
Если бы функция только смотрела на строки, то передавать надо было их по конст. ссылке или string_view. Т.к. меняет, то да, слелано правильно -- по значению. Здесь объекты -- короткие строки, не влияет; а в общем случае тогда при вызове можно передавать те данные, которые дальше не нужны:
compUsrWthCmptr(std::move(guess), pcNumber);
Или проще убрать объявление guess, и записать
compUsrWthCmptr(std::to_string(usersGuess), pcNumber);
Странное название startTheGame. Как будто есть еще асинхронные pause и stop. Наверно просто game подошло лучше.