Thiago, boa tarde! Tudo bem?
Vamos tentar responder:
1- A utilização da anotação (@ManagedBean) é uma maneira de simplificar a indicação de que a classe indicada é uma classe ManagedBean, e que deve ser "gerenciada" pelo JSF.
Antes do JSF 2.0, essa configuração era feita no arquivo "faces-config.xml", onde você indicada os dados da classe a ser gerenciada pelo jsf (ManagedBean), e suas configurações (de escopo, nome, etc), como no exemplo abaixo:
...
    <managed-bean>
        <managed-bean-name>meuManagedBean</managed-bean-name>
        <managed-bean-class>br.com.alura.managedBeans.MeuManagedBean</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
...
- Ao abrir a tag <managed-bean>, você indica que haverá uma classe gerenciada pelo JSF, e que você indicará suas configurações dentro dessa tag.
- A tag <managed-bean-name>indica o nome que você utilizará no .xhtml (ou .jsp dependendo da aplicação) para indicar ao JSF que esse atributo (Ex:meuManagedBean.nome)ou método citado (Ex:meuManagedBean.abrir) pertence a classe que você havia mapeado.
- A tag <managed-bean-class>é a indicação dos pacotes e da classe a qual o JSF deve procurar quando a página chamar por esse ManagedBean
- A tag <managed-bean-scope>é a indicação do escopo dessa classe.
Com relação ao atributo "for", teria como você postar o trecho de código que você tem dúvida?
Também gostaria de um trecho de código de como você está utilizando o "fieldset", para poder tentar te ajudar.
Espero ter ajudado!