Respostas:
c:out
escapa caracteres HTML para evitar scripts entre sites.
E se person.name = <script>alert("Yo")</script>
o script será executado no segundo caso, mas não ao usar c:out
Como disse Will Wagner, na versão antiga do jsp você deve sempre usar c:out
para gerar texto dinâmico.
Além disso, usando esta sintaxe:
<c:out value="${person.name}">No name</c:out>
você pode exibir o texto "Sem nome" quando o nome for nulo.
c:out
também tem um atributo para atribuir um valor padrão se o valor de person.name
for nulo.
Versões mais antigas do JSP não suportavam a segunda sintaxe.