"Double" é um tipo de variável que armazena qualquer número real (inclusive com casas decimais), ao contrário da variável do tipo integer, que como o nome diz serve apenas para números inteiros.
O alcance da variável "double" vai de 5.0 x 10^-324 até 1.7 x 10^308.
O TryStrToFloat é uma função do delphi que pega uma string (que no seu programa está nos campos numero1 e numero2) e tenta convertê-la para número real. Se conseguir, a função retorna um resultado "verdadeiro" (true) e armazena o número real na variável que foi declarada na função (neste caso, a variável do tipo "double" chamada "valor" - ou um nome qualquer que você quiser dar a ela). Se não conseguir (ex: o campo está vazio, ou a string não é numérica) a função retorna um resultado "falso" e mostra aquela mensagem de "valor não numérico..." .
Se o resultado da função TryStrToFloat for "verdadeiro", que é o que a linha abaixo significa,
if (trystrtofloat(numero1.text,valor)) and (trystrtofloat(numero2.text,valor))
o algoritmo transforma as strings dos campos em números reais (strtofloat),faz a soma deles, e converte o resultado para string novamente (formatfloat), conforme mostrado abaixo:
then resultado.caption:=formatfloat('0.##',(strtofloat( numero1.text) + strtofloat(numero2.text)))
O parâmetro '0.##' diz à função formatfloat com até quantas casas decimais o resultado deve ser mostrado. Se for usado #, significa que aquela casa decimal é opcional. Por exemplo, se for digitado 4 e 4, o resultado mostrado será 8. Se o usuário digitar 4 e 4,123, o resultado será mostrado como 8,12, porque foi definida a apresentação de apenas duas casas decimais (##). Se em vez de # você usar 0 (ex: '0.00000') o resultado será mostrado como 8,12300.