Contexto da Aplicação

Boa tarde galera…
Estou estudando JSF com PrimeFaces e eu tive caso de ter que usar a classe FacesContext, pesquisei para saber o que realmente essa classe faz e as resposta que vi dizia que serve para pegar o contexto da aplicação, porém eu não consegui achar nem entender o que é contexto da aplicação. Gostaria de saber em quais determinado momento que eu devo pegar o contexto da aplicação, isso ainda não ficou claro na minha mente, lembrando que já usei a classe FacesContext para add mensagem, mas ainda não entendi em quais momentos específicos eu preciso usar a classe FacesContext…Galera desde já obrigado

Isso é um problema originado a partir do momento em que se começa a estudar da metade para frente da coisa (lógico que a culpa não é tua).
Mas, por quê diz “da metade para frente”?
Bom, você entende que o JSF é um framework que visa atender uma especificação Java (JSR - Java Specification Release), certo?
O que talvez você não saiba é que é possível desenvolver sistemas web sem o uso de um framework, seja ele qual for.
Então, quando você utiliza qualquer framework, está pegando a segunda parte do desenvolvimento java web. A primeira parte é composta por Servlets, JavaServer Pages (as famosas jsps) e por Java Server Standard Tag Library + Expression Language (tão famosas quanto JSTL e EL).
Quando você estuda Servlets, acaba entendendo mais a fundo o que são conceitos básicos, como o contexto da aplicação (e os vários outros elementos existentes no ciclo de vida de uma aplicação web, como a sessão, o request, o response e a página).
Estes conceitos e elementos estão fortemente inseridos nos frameworks como o JSF, embora nem sempre estejam tão claros.
Então, como posso entender o que é esse contexto de aplicação?
Vamos falar disso já já.
Você entende que uma aplicação web tem um ciclo de vida baseado na seguinte sequência: requisição -> processamento -> geração do response -> carregamento da página, certo?
O que não fica tão claro é que a sessão é estabelecida quando você faz a requisição e o servidor a aceita (retorno da requisição com status 200 - OK).
Para que o retorno da requisição tenha status 200, é preciso que o servidor consiga encontrar o que foi solicitado, no caso do Java, podemos dizer que você chamou a página http://www.seusite.com.br/ e que esta URL está associada a uma aplicação (o ‘seusite’). Sim, o projeto que você criou e “subiu” para o servidor é a aplicação. O que a aplicação contém? Páginas html, páginas xhtml, arquivos js, css, imagens, etc. Tudo o que está inserido dentro do projeto e que é disponibilizado no servidor é o tal contexto da aplicação.
O FacesContext funciona como uma árvore onde você “pendura” coisas (não exatamente você, mas o container do faces) para, em algum momento, acessá-las.
Conceitualmente, é extremamente importante entender o ciclo de vida do JSF, inclusive as nuances acerca do contexto da aplicação, isso facilitará e muito tua vida enquanto desenvolvedor JSF