R, version-dependent, 110 84 bytes
Edit: -26 bytes with inspiration from user81655's answer
Note: Function-pairs #1 and #2 below depend on the version-dependent output formatting of R functions, and work on my locally-installed R version 3.2.1, but unfortunately not on version 3.5.2 which is installed on TIO. A TIO-compliant (but longer) adjusted version of #1 can be tried here: try it.
1: functions that read each other's source code: 84 = 61+23 bytes
p=function(c,x=q)sum(el(gregexpr(c,capture.output(x),f=T))>0)
q=function(c,x=p)p(c,x)
2: functions that read their own source code, but not each other's: 142 = 2x 71 bytes
p=function(c,pr=2,q=1)sum(el(gregexpr(c,capture.output(p),f=T))>pr-q-q)
q=function(c,qr=2,p=1)sum(el(gregexpr(c,capture.output(q),f=T))>qr-p-p)
3: 'proper quine'-like functions that don't read their own source code: 236 = 2x 118 bytes
p=function(c,q=1,p=1)2*sum(el(gregexpr(c,sQuote('function(c,p=1,q=1)2*sum(el(gregexpr(c,sQuote(),f=T))>p-q)'),f=T))>q-p)
q=function(c,p=1,q=1)2*sum(el(gregexpr(c,sQuote('function(c,q=1,p=1)2*sum(el(gregexpr(c,sQuote(),f=T))>q-p)'),f=T))>p-q)
R, version-dependent, 150 bytes
New function-pair to comply with the newly-added rule that functions cannot be anagrams of each other
4: functions that read their own source code, but not each other's, and are not anagrams of each other: 150 = 2x 75 bytes
p=function(z)sum(el(gregexpr(z,chartr("yz","zy",capture.output(p)),f=T))>0)
q=function(y)sum(el(gregexpr(y,chartr("zy","yz",capture.output(q)),f=T))>0)