Hi ,
 
1) How much should be the size of RFS is not standard answer but depends on packages you want to add on RFS  

2) Consider RFS as bucket. The size of bucket will be based on whats inside the bucket .
   Hence two team can have very different size as their use case will be different 

3) Just to give you an context , i just completed an project for Montavista where
     i was able to bring the RFS size from 800MB to 250+MB i.e around 70% size reduction 

4) How you do is depending upon what package you are adding , whats the alternate to existing package 
   then you go in deep of specific module to reduce their size

5) The good starting point will be to enable "buildhistory" in your custom build 

6) An quick vies of the file you shared below are few starting points to help 
   You can evaluate them :
   a) IMAGE_FEATURES:remove = " dbg-pkgs dev-pkgs "
   b) Seems you are adding bash & zip both , you can shave only one on target 
   c) Remove VIM it can give you good saving 
   d) You can remove alsa from Machine & Distro feature if you don't want audio 
   e) Do you really require cpp ,cpio , cmake on target 
   f) mariadb could be heavy 
   g) Looks like many file system tools are being added in RFS , you can look at them 
   
It would be helpful to others if you share your image & installed-package files as that gives clear idea as to what is going in RFS
 
Thanks ,
Ashish