Quando você trabalha em programas baseados nas tecnologias AWT ou Swing (interface gráfica), toda seção do seu código-fonte que atualize a interface precisa ser executada dentro de uma thread específica, responsável por enfileirar e despachar os eventos relacionados à interface. O que o método SwingUtilities.invokeLater() faz é receber um evento de interface (encapsulado numa implementação de Runnable; no exemplo que você deu, está sendo usada uma classe anônima) e enfileirá-lo, para que seja despachado pela thread de eventos de interface assim que houver oportunidade.