1/. There's no difference between decode and ifthenelse in any of these examples. Decode is a syntactically easier representation of ifthenelse with nested conditions only.
2/. You cannot use the lookup_ext function in the mapping of a single output column because in this case it returns 2 output columns. You have to do it my way
.