Pues .. lo que te haría falta es contar palabras .. eso lo podrías hacer con str_word_count() .. pero a su vez tendrías que comparar cada palabra con el "criterio" (que ha de ser una palabra .. no espacios).
   Código PHP:
    <?
$texto="tengo un coche nuevo";
$criterio="nuevo";
 
// obtenemos un array con las palabras.
$palabras=explode(" ",$texto);
// contamos los elementos del array obtenido ...
$total_palabras=count($palabras);
 
// recorremos el array de palabras .. El "indice" del array será la posición que ocupe dentro de la frase.
foreach ($palabras as $posicion => $palabra){
   // si se cumple que el criterio es igual a la palabra que estamos leyendo del array ...
    if ($palabra == $criterio){
        // calculamos el pocentaje como lo necesitas
        $porcentaje=100-($posicion*100)/$total_palabras;
        // y ya no hace falta mirar más así que terminamos el bucle (ciclo del foreach)
        break;
    }
 
}
 
echo "Frase: ".$texto."<br>";
echo "Criterio: ".$criterio."<br>";
echo "Porcentaje: ".$porcentaje." %";
 
?>    
  Problemas o consideraciones ..  
* Sólo buscar por un criterio .. y este ha de ser una palabra (no espacios).
* Si se repite el critério .. se toma como "porcentaje" la primera coincidencia/posición que se encuentre ... 
Eso sería la base .. la verdad que sin saber como ha de trabajar la "lógica" (pues el ejemplo que hicistes primero y la explicación últmima != ) no sé si será eso lo que necesitas .. pero por ahí anda la cosa ..   
Un saludo,