in your post you have parentheses but in the actual command there are none. Since && has higher precedence than ||, it actually translates to
cat file |awk /IP/ || /IP/ || (/IP/ && /string1/ && /string2/)
also, you don't need the cat
command, awk will accept an input file as an argument.