Devi sovrascrivere l'altro costruttore, quello che accetta la finestra principale e il flag booleano che indica se la JDialog e' modale o no(in realta'basta il primo se presupponi che la finestra possa essere solo modale), poi alla prima riga chiami il costruttore della superclasse.
codice:
package provafinestra;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.*;

public class finestrasecondaria extends JDialog {
	private Container a;
	private JButton b;
	
	public finestrasecondaria(JFrame owner, boolean modal){
                super(owner, modal);
		Container a = getContentPane();
		//Eccetera
L'altra classe la modifichi quando crei la finestra secondaria
codice:
finestrasecondaria n= new finestrasecondaria(this, true);
Per la seconda domanda, a meno che non hai un buon motivo per forzare l'arresto di tutti i thread, usa il metodo dispose() sia per JFrame che per JDialog.