READ hace una lectura, si tu no colocas de donde quieres hacer esa lectura, pascal hace una lectura por default, en este caso es por teclado, pero podrias hacer una lectura de un archivo. Si es por teclado, READ lee lo que escribes y se lo asignara a una variable.
READLN cumple la misma función, nada mas que luego de leer hace un salto de linea.
READKEY a diferencia de los anteriores es una acción de una unit, la CRT, esta solo captura una tecla y creo que la deja almacenada en el buffer. Es muy util para utilizarla como pausa en un programa (por ejemplo para decirle al usuario: "oprima una tecla para continuar"), obviamente uno tambien puede almacenar la tecla que pulso el usuario, la diferencia al tratarla asi es que con el read o readln uno debe precionar "enter" al finalizar la intruduccion de los datos, en cambio readkey lee una tecla y sale de esa acción, no se si se entendio.