Ответы:
c:out
экранирует символы HTML, чтобы избежать межсайтового скриптинга.
если person.name = <script>alert("Yo")</script>
скрипт будет выполнен во втором случае, но не при использовании c:out
Как сказал Уилл Вагнер, в старой версии jsp вы всегда должны использовать c:out
для вывода динамического текста.
Более того, используя этот синтаксис:
<c:out value="${person.name}">No name</c:out>
вы можете отобразить текст «Без имени», если имя не указано.
c:out
также имеет атрибут для присвоения значения по умолчанию, если значение person.name
оказывается нулевым.
Источник: из (Документация, созданная TLDDoc)
Старые версии JSP не поддерживали второй синтаксис.