readonly - это параметр, который пользователь не может менять, но который активен.
disabled - это параметр, который в данный момент по каким-то причинам вообще невозможен или не имеет смысла (но убирать его из формы не хочется, чтобы не ломать пользователю привычный шаблон). При этом контрол отрисовывается в бледном погашенном виде.
Например, если выбрать в карточке сотрудника пол "мужской", то полю "дата последнего гинекологического осмотра" я бы поставил атрибут disabled.
Даже не знаю, как еще объяснить, по-моему всё предельно очевидно.