特に難しい部分はありませんでした。

Pythonだと、リストの先頭以外の残りの値を取得するにはlist[1:]が一番シンプルかな?と思います。
ただ、Pythonは末尾再帰最適化(末尾呼び出し最適化?)が効かないようで、さらに手動で再帰呼出しの回数を指定して上げる必要が有ります。

import sys
from typing import List

# 再帰の最大回数を増やす
sys.setrecursionlimit(2002)

def my_sum(l: List[int]) -> int:
    return 0 if l == [] else l[0] + my_sum(l[1:])

assert 1999000 == my_sum( list(range(1, 2000)) )