1) Yes. The "a" is a type parameter, so we can have a Tree Int or Tree String. Note, however, that these two are not the same types.
2) You can define examples of Tree to test a function by just setting a variable equal to it, like so
tree1 = Leaf "hello"
tree2 = Branch [Branch [tree1]]
3) To find the sum, you make a function to recurse over the structure of the tree. It should pattern match on the two different types of Tree (Leaf and Branch) and extract the values from the Branches. Note, that this function would be restricted to Tree a's where a is a type that can be added.