Rodrigo,
Variáveis recebem/armazenam valores.
Neste caso, a variável 'desenha' recebe dois valores do tipo boolean: false (falso) e true (verdadeiro).
Este caso de valores booleanos traz uma peculiaridade: se você coloca um 'if', normalmente ele compara, por exemplo:
if(i > 3) {....
Se o valor armazenado em i for maior que 3, a comparação i > 3 será verdadeira (true), e o código executará algo. Se for menor ou igual a 3, será false e não executa.
No caso de uma variável que armazena um valor booleano, a comparação poderia ser assim:
if(desenha) {....
ou seja, deixa de ser uma comparação. Se o valor na variável 'desenha' for 'true' (verdadeiro), o código executará algo. Se for 'false', não executa.
A variável 'tela' está lá no começo do código. Recebe e representa o elemento 'canvas'
var tela = document.querySelector('canvas');
onmousedown e onmouseup são eventos quepercebem se o botão esuqerdo do mouse foi pressionado, ou se foi solto.
Estes eventos estão aplicados à variável 'tela' - atrelada ao canvas.
tela.onmousedown = habilitaDesenhar;
tela.onmouseup = desabilitaDesenhar;
quando um destes eventos ocorrer, eles invocam/chamam a function à qual estão ligados: habilitaDesenhar e desabilitaDesenhar.