1. The file "quits.txt" is not in your $mircdir. That's where $read() searches in if you don't give it a path. Typing //echo -a $exists(quits.txt) will tell you if it does. Type //run $mircdir and look inside that directory for the quits.txt file. If it's not there, that's why.
The file is in the same folder as the mirc.exe file.
2. The server you're on doesn't list quit messages. If you're using a round-robin server on a network, you might be getting a server that supports them one day, and a server that does not another. Freenode, for instance, does not list quit messages. EFNet also has some servers that don't, but again, it depends on the server. Some do, some don't. In this case, you've done nothing wrong, this is just how IRC works.
Other members of the forum have quit messages pop up every time they quit. I doubt the server is singling me out.
3. The top of your quits.txt is a number. Don't put numbers at the top of text files, mIRC thinks they are line counts. If you DO have a number at the top of a file, use the t switch in $read() like so: $read(quits.txt,t)
Nope. Just text.
4. The line you're trying to read has a "$" in it, possibly prefixing an invalid identifier name. "$5.00", for instance will cause mIRC to error if you have identifier warnings on. You should be using the "n" switch with $read() unless you specifically want to evaluate the text inside your quits.txt file. $read(quits.txt,tn) is the way to go (the t is from point 3).
The "n" seems to work. Not sure why it would require it on some and not others.
The only symbols in the file are apostrophe, comma, period and ...