Según la Api
static void showMessageDialog(Component parentComponent, Object message)
Brings up an information-message dialog titled "Message".
static void showMessageDialog(Component parentComponent, Object message, String title, int messageType)
Brings up a dialog that displays a message using a default icon determined by the messageType parameter.
static void showMessageDialog(Component parentComponent, Object message, String title, int messageType, Icon icon)
Brings up a dialog displaying a message, specifying all parameters.
Puedes usar cualquiera de estos metodos.
Cita: pero si solo le paso JOptionPane.showMessageDialog("titulo"); no compila.
Pues, no existe el método showMessageDialog de la clase JOptionPane que reciba por parámetro sólo un argumento.
Cita: pero como puedo sabr cuales de estos parametros son "obligatorios" y cuales no
Todos los parámetros son obligatorios, si le pasas distinta cantidad de parámetros, estás llamando otro método, que en el caso anterior no existe.