Rather than handle it in font-lock highlighing rules, you want to handle it at the level of syntax tables. Now syntax-tables can't directly handle such start/end markers, so you'll have to use the syntax-propertize system. E.g.
("\\_<\\(s\\)kip\\_>" (1 "<"))
("\\_<noski\\(p\\)\\_>" (1 ">"))))
An important difference between font-lock rules and syntax-propertize rules is that font-lock rules can be applied "out of order" or piecemeal. More specifically, by default Emacs only applies font-lock rules to the parts of the buffer that are displayed, so if the
skip in your code happens to be in a part of the buffer which was never displayed, the font-lock rules will simply miss it.
Another important difference is that font-lock rules don't naturally have state, so you either need to use one regexp which matches the multi-line element (and then try and force font-lock to always consider a large enough chunk of the buffer to see both
noskip at the same time) or to separately match
noskip, and every line between them, and to each time check whether we're still within a skip..noskip thingy.