This guide will get you going on how to create the VLANs you want.
https://docs.netgate.com/pfsense/en/latest/book/vlan/pfsense-vlan-configuration.html
You can then create firewall rules on each interface to restrict access outbound. By default, only the LAN interface gets a Default Allow rule that passes all traffic from LAN to anywhere. All other interfaces, ie your VLANs, will require at least one rule added in order for them to talk.
I would stick with pfB instead of pihole as you then only have one device to worry about, and if pfSense goes down then you have bigger fish to fry then adblocking, ha!
Bandwidth monitoring can be done with ntop or lightsquid, depending on if you want all traffic or just http/s.
https://www.youtube.com/watch?v=_jBufEhP_IU
You can do scheduling with pfSense but the interface is a little clunky, and you're limited to 15 minute intervals IIRC. You create a schedule and then create a firewall rule and link to it.