You asked a few questions so that I answer them one by one.
Question 1: why does the compiler tell me Instance of Num [Int] required for definition of sum1?
You have created a function with a name sum1with a type [Int]->[Int]. However, consider a line sum1 [] = 0: this returns Int, not [Int]. The solution to this problem is to change the line to sum1 [] = [].
2: (x:xs)?
Haskell -, pattern matching. , , , x xs - , .
, sum1 [1,2,3], x 1, xs [2,3].
3: n- , ?
!! - , , , + *. , [1,2,3]!!1 2.
, , , . , .