Обязательно ли писать alt в img ?

Да.
Это требует стандарт, да и здравый смысл.

Много пользователей отключают картинки для экономии трафика, а некоторые используют текстовые или даже голосовые браузеры.

Если картинка не несет никакой смысловой нагрузки (элемент дизайна, “распорка” и т.п.), то тогда в тег <img> ставим пустое значение, но сам alt обязательно.

<img alt=″″ … >