If you want to use a dynamic routing protocol, use OSPF if possible. RIP is ancient and annoying. Though you’re using static routes so you don’t need dynamic routing at all - best to disable it if its not being used.
You don’t want this route on your switch. The fact that you have a 10.28.20.10/24 IP means there will be an implicit route for local traffic, so that route does nothing.
Your static routes look correct. Can you ping 10.28.10.1 from a device in vlan 20? If so the firewall knows how to route packets back to vlan20. If not then you still have a routing issue.
My guess is that Opnsense is not doing NAT to outgoing packets from vlan 20. Have a look at tcpdump on your WAN interface, and on your inside interface - the source address should change (aka get NAT’d) when it goes out the outside interface.