No, ' doesn't become a QUOTE token; it becomes an expression (quote __) (i.e., a list, like all non-atomic expressions). '( isn't a thing in itself; it's ' followed by a list (up to the matching close parenthesis), so the list goes in place of the __ above.
'(a b c) becomes
(quote ⊆a b c)) where the ⊆ (meant to be an underlined open parenthesis but there's no such character alas) is the exact parenthesis that you typed after the quote.
In PARSE, you are trying to solve a tree-structured problem with a simple iteration. What you want is to make a recursive call to PARSE when you see an open paren.
Ah, I'm reading your mind, and I see that you don't think you can do that because the input to the recursive call will be the entire rest of the input list, whereas you want it only to use up the part up to the matching close paren.
There are various ways to solve this problem, but here's the way I like best:
and inside PARSE you say
(or PEEK if you're going to read the same token again). For example:
(except if you do this you'll probably change the name of the input to PARSE). So you always, even at top level, enter PARSE looking at an open paren unless the expression is atomic (a symbol or a number).
Cute aspect of this approach is that the recursive call looks like an infinite loop because the input doesn't change, but the input includes local state, and it's gotten closer to the end of its list.
Of course PARSE doesn't do a recursive call if the very first token it sees is an open paren; it just skips over that.
Oh yeah, ⊣ is a traditional end-of-text signal, and ⧮ is error bars around a white square. ("Error bars" are a thing in statistics, not indicating an error the way we mean it, but I'm making a pun by using it.)
But don't let the cute technical details make you forget the boldfaced sentence with which I started this response. If you have a tree structured problem, don't even consider an iterative solution!