Be se ti soffermarsi a capire cosa fa il "binding" forse lo capiresti !
Cmq binding non fa altro che "bindare" associare un qualcosa (componente) sul backing bean. Nel tuo caso specifico
codice:
<h:panelGroup binding="#{calculatorController.resultsPanel}">
Questa riga di codice va ad associare questo panelGroup alla proprietà resultsPanel del backingBean "calculatorController".
Se togli questo panelGroup ovviamente la proprietà resultsPanel non verrà mai inizilizzata e quindi va a generare un NullPointerExcpetion nel metodo clear quando vai a chiamare il metodo setRendered(false)
codice:
public String clear() {
      .....
      resultsPanel.setRendered(false);
      .....
Ciao