Confusão JFrame, JPanel, Container, Component e afins

PessoALL, estou começando estudar sobre swing e estou fazendo algumas confusões.

Bom, segundo Deitel (6 Ed.):
Component são anexados a Containers. Dessa forma podemos ter JLabel, JTextField (entre outros) anexados a um JPanel, por exemplo.

Se JPanel é uma subclasse de Container, tecnicamente (“JAVAmente”) qual a diferença em eu anexar meus Components a JPanel ou Container?

JLabel label; JPanel panel; Container container; ... panel.add(label); x //qual a diferença? container.add(label);

Outro questão é que vejo que sempre quando criamos uma classe para trabalhar com os ditos acima, estendemos essa classe de JFrame.
Qual a necessidade de estendermos?

Muito obrigado.

Nenhuma idéia pessoal?

Falando bem rapido:

JFrame = janela…
Extender = ter sua propria janela…

JPanel extends Container pq JPanel é a implementação Swing do Container (existem funçoes especificas do swing, entre correções e outras coisas…)