redirect usa o HTTP redirect, que retorna um status HTTP 3XX (por padrão o Grails usa o 302) indicando uma outra URL pro navegador seguir. Basicamente funciona como se o usuário tivesse digitado uma nova URL. Só passa parâmetro pelo método GET.
forward é como se fosse um redirecionamento interno do Grails (a maioria das linguagens pra Web tem isso tb), ele usa a mesma requisição HTTP e pro usuário a URL não muda. Pode causar problemas se o usuário der refresh na página.
chain é um redirect, mas que passa parametros via o flash do grails, que dura só entre um request e outro, então se você der um chain passando parametros, se o usuário der um refresh provavelmente vai dar erro por que os parametros se perderam.
Por padrão, uso redirect sempre, é o mais seguro e mais usual.
Obrigado! Acho que entendi...
Manja se tem diferenças de desempenho?
Só ainda to meio viajando onde usar cada um na prática
Nunca comparei desempenho, mas teoricamente o forward deve ser o mais rápido já que é totalmente interno do grails, o chain e o redirect implica em finalizar o request e começar outro.