All the Swing listeners are executed in the event dispatch thread, unlike the main method of a Java program. So, when the button on the first frame is clicked, you're already in the EDT, and there's no need to use EventQueue.invokeLater()
to open the second one.
The main method in the second JFrame is indeed useless if you don't plan to use it. Just create an instance of your second frame, and make it visible:
SecondFrame frame = new SecondFrame();
frame.setVisible(true);