Non ti devi spaventare, in php le operazioni di conversione e confronto sono più strane, complicate e imprevedibili di quanto dovrebbe essere.
L'idea di contare i byte della stringa è buona, hai solo confuso count per strlen. Un modo ancora migliore per capire il problema è vedere cosa c'è realmente in $num2. Puoi controllare conecho count($num2); -> mi da 1 (dovrebbe darmi 5)
Dicci cosa ottieni tu e ti indicheremo la causa del problema. Se nella conversione ottieni uno zero significa che molto probabilmente $num2 non inizia con un numero, ma hai degli altri caratteri in quella stringa. Il fatto che il "glifo invisibile" non venga visualizzato quando lo stampi con echo non è influente e neanche tanto strano se pensi che quei dati arrivano da una pagina web con chissà quale codifica.Codice PHP:
echo bin2hex($num2); // "18.80" -> 31382e3830