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:outpara 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:outtambém tem um atributo para atribuir um valor padrão se o valor de person.namefor nulo.
Versões mais antigas do JSP não suportavam a segunda sintaxe.