strcmpは引数の指しているNUL終端文字配列を比較し、一致すると0を返す。

if(strcmp(name, "end") == 0)
は「nameが"end"だったら」

(pcal+i)->name
は
(*(pcal + i)).name
の略記法であり、結局は
cal[i].name
のこと。

該当するnameのものをforループで探し、
見つかったら( if (strcmp(name, (pcal+i)->name) == 0) )
計算、もう探す必要はないのでbreakする。