Выходит что strlen() именно кол-во байтов меряет
других объяснений у меня нет
Именно так и есть.
А для многобайтных кодировок существуют специальные функции:
PHP:
$string='тест'; // в кодировке UTF-8
var_dump(iconv_strlen($string, 'UTF-8'));
var_dump(mb_strlen($string, 'UTF-8'));