En la segunda alternativa que presente se trata de aprovechar las variables de instancia del objeto TForm1
En Delphi y seguro en Lazarus sea igual, al usar el IDE y agregar un TPanel, automaticamente se genera una variable de instancia en el Form, es decir:
type
TForm1 = class(TForm)
Panel1: TPanel;
end;
Esto quiere decir que todas las instancias de TForm1, conocen una variable de instancia publica llamada Panel1, de tipo TPanel
Esto es perfectamente valido:
uses
Unit1;
procedure TForm2.FormCreate(Sender: TObject);
begin
Form1.Panel1.Caption := 'hola!';
end;
Ahora bien, siendo que todos los form de tipo TForm1 conocen esta variable de instancia Panel, es totalmente valido usarla dentro de los metodos y ahorrarse la parte del Sender
Cuando se trata de usar siempre el mismo panel, y siempre el mismo label, y ya estan declarados, es decir, tengo una referencia a los objetos, no hace falta todo el circo de convertir Sender en el TPanel, luego buscar el Label.. usa las variables de instancia que ya estan y fin de la historia 
La parte interesante del Sender entra cuando distintos objetos comparten un mismo evento; incluso hasta podria ser el caso de distintos objetos de distinto tipo.
Para no complicarte mas la vida, y darte un ejemplo mas amigable, que pasaria si en vez de tener 1 panel, tenes 2, y los dos tienen que hacer exactamente lo mismo?
La solucion mas acertada es, escribir un solo metodo que responda adecuadamente para los 2 paneles. La manera mas directa de resolverlo es usando la tecnica del Sender que comente mas arriba, hacer todo el trabajo por identificar el objeto y luego recorrer dentro de el para buscar el label.