aramalho, bom dia!
As linhas 7 e 8 não tem nada de errado, você pode atribuir à novas variáveis valores de variáveis finais. Agora se tentassemos atribuir novos valores às variáveis s2 e c2 ocorreria erro de compilação.
como o valor de s2 e c2 são menores do que 128 e o compilador sabe que esse valor nunca vai se alterar, esse valor é particularmente válido para um tipo byte. Caso a variável não fosse final (variáveis s1 e c1) ou o valor de s2 e c2 fosse maior que o permitido por um tipo byte, a conversão cast deveria ser explicita.
As linhas 3 e 4 dão erro de compilação, para corrigir é necessário efetuar um cast.