1 No you don't, but the more you know, the better.
2 Yes
3 Sometimes you have to, sometimes you don't. Sometimes it simply won't detect it
4 You can code something in thousands of way. Also, you sometimes only have to change some numbers in your code, and it will become undetected.