First of all, OR operator has higher precedence than implicit AND, so your query means:
("word1 word2" | word3^20) word4 word5
and not
"word1 word2" | (word3^20 word4 word5)
Also this query doesn’t do what you want. I can try to make better query, but few questions first about what you want:
At 1), do the words word1 and word2 have to be adjacent?
At 2), do you mean:
a) word3 and maybe BOTH of word4 and word5
or
b) word3 and maybe EITHER OR BOTH of word4 and word5
Also if you mean a), then do the words word4 and word5 have to be adjacent?