Son cosas diferentes:
según
http://html.conclase.net/w3c/html401...act/forms.html...
read only:
Cita: Definiciones de atributos
readonly [CI]
Cuando está establecido para un control de formulario, este atributo booleano impide que haya cambios en el control.
El atributo readonly especifica si el control puede ser modificado por el usuario.
Cuando está establecido, el atributo readonly tiene los siguientes efectos sobre un elemento:
El foco puede dirigirse hacia elementos de sólo lectura, pero éstos no pueden ser modificados por el usuario.
Los elementos de sólo lectura están incluidos en la navegación con tabulador.
Los elementos de sólo lectura pueden tener éxito.
Los siguientes elementos soportan el atributo readonly: INPUT y TEXTAREA.
El modo en que se representan los elementos de sólo lectura depende del agente de usuario.
Nota. La única manera de modificar dinámicamente el valor del atributo readonly es mediante un script.
disabled:
Cita: 17.12.1 Controles deshabilitados
Definiciones de atributos
disabled [CI]
Cuando se establece para un control de formulario, este atributo booleano deshabilita el control para la entrada de datos por parte del usuario.
Cuando está establecido, el atributo disabled tiene los siguientes efectos sobre un elemento:
No se puede dirigir el foco hacia controles deshabilitados.
En el orden de tabulación, se salta por encima de los controles deshabilitados.
Los controles deshabilitados no pueden tener éxito.
Los siguientes elementos soportan el atributo disabled: BUTTON, INPUT, OPTGROUP, OPTION, SELECT y TEXTAREA.
Este atributo se hereda, pero las declaraciones locales prevalecen sobre el valor heredado.
El modo en que se representan los elementos deshabilitados depende del agente de usuario. Por ejemplo, algunos agentes de usuario dibujan en gris los objetos de menú deshabilitados, los rótulos de los botones, etc.
En este ejemplo, el elemento INPUT está deshabilitado. Por tanto, no puede recibir datos del usuario, y su valor no se enviará con el formulario.
<INPUT disabled name="pedro" value="piedra">
Nota. El único modo de modificar dinámicamente el valor del atributo disabled es por medio de un script.
En resumen:
read only no permite al usuario escribir, pero existe (tiene valor, toma foco,...), mientras que disabled no existe (mientras está disabled cuando se envía el form, no toma valor; y no puede recibir el foco).
Yo usaría read only para datos que hay que enviar y que no quiero que el usuario toquetee (que lo seleccione de otro sitio, como un calendario), y disabled para que sólo rellene uno de esos campos y aunque ponga algo en otro, lo omita.
espero haberte aclarado...
Para sacarte estas definiciones he buscado en google:
http://www.google.es/search?hl=es&q=...a=lr%3Dlang_es