Ya te lo has imaginado: cuando escribes una aplicación para Android, puedes hacer operaciones que requieren permisos. La lista completa es el enlace que has dado : http://developer.Android.com/reference/Android/Manifest.permission.html . La mayoría de los permisos enumerados son muy explícitos para los desarrolladores, pero para el usuario, algunos pueden sonar misteriosos.
Tomando tu ejemplo, el permiso READ_PHONE_STATE se utiliza principalmente para tener acceso al ID del teléfono. Permite a los desarrolladores saber cuántos usuarios (teléfonos) tienen. Pero este permiso también nos permite saber si está recibiendo una llamada o no para reaccionar en consecuencia (si es una aplicación de música: reducir el volumen), y cosas por el estilo.
Pero, para 2 aplicaciones diferentes de Android, puedes ver los mismos permisos con 2 usos diferentes de los mismos. Para un permiso grande como WRITE_EXTERNAL_STORAGE (para escribir en la tarjeta SD), una puede simplemente escribir sus archivos de configuración, la otra puede poner un script de malware en él... La única manera de saber exactamente lo que una aplicación hace con los permisos, es ver el código. Pero, en la mayoría de los casos, si es una aplicación que no es de código abierto, no puedes...
Espero responder a su pregunta. Si no, trataré de dar detalles con su pregunta más precisa.
Saludos