コードが変質してしまっているよ。
>>744は、「最初のatomが出たら残りのリストの長さを返せ」になってしまっているから、こうなる:

(f1 '(a (b 1))) => 1
(f1 '(a (b 1) (c 2))) => 2
(f1 '(a (b 1) (c 2) (d 3))) => 3

>>742のf1を使ってatomの数を数えるのは二通り考えられる。
a. f1の戻り値のリストの長さを数えるf2を作る。
b. f1にそれまで出てきたatomの数を表す引数を増やす。f1を最初に呼ぶときには0を入れることになる(そういうf2を作る)。