Разница такая же, как между свойством HTMLElement и атрибутом тэга, которого он представляет.
Проще говоря, prop читает свойство объекта, представляющего тэг, а attr именно атрибут тэга. Разницы, для стандартных свойств особой нет(value для input, например, есть и там, и там). А вот для нестандартных, prop не будет работать