See https://openwrt.org/docs/guide-user/network/traffic-shaping/sqm-details#faq direction really is a property of the interface and for LAN-side interfaces, download and upload are indeed inverted as compared to internet down- and upload. A more precise term would be ingress and egress (as these are clearly interface specific), but then we would need to explain all of this to al SQM users instead of just those advanced users that instantiate SQM on non-WAN interfaces. Does this help?
Well, that is not how SQM works by default, which is per-flow fairness, so that all flows will get a fair share of the available capacity. Now it turns out that some applications like bit torrent can recruit large numbers of flows and hence get an “unfair” advantage over low-flow count applications/users. For these situations cake offers isolation modes that (first) share fairly between internal IP-addresses (and optionally secondarily for each internal host also apply per flow fairness). That way no single host can hog more than its fair share of capacity (a share which with just one host active can be 100%). For many home networks that is all that seems needed for acceptable sharing. Sure it does not solve the torrent and web browser on the same host situation, but many users are happy enough to have the torrents running on a different computer than their browser.
That said sqm can also be configured to evaluate a few diff serve markings to steer packets into a small number of different priority tiers (see simple.qos and layer_cake.qos), but the onus is on the user how to correctly label packets with the corrects DSCPs, which is especially tricky for packets coming from the internet, as SQM’s discs run before iptable.
Yes and no. The default scripts do not seem to offer what you want, but you can easily create your own scripts and just use the existing SQM framework to interface your script with OpenWrt/TOS. Have a look at /usr/lib/sqm, to start just run cp /usr/lib/sqm/simple.qos /usr/lib/sqm/my_simple.qos
and cp /usr/lib/sqm/simple.qos.help /usr/lib/sqm/my_simple.qos.help
and edit the two my_simple.* files to your hearts content, have a look at /usr/lib/sqm/defaults.sh and /usr/lib/sqm/functions.sh to get a feel of the existing helper functions.
That said, I would recommend you simply try to configure your WAN interface with SQM with say layer_cake.qos and follow the instructions for per-internal-host fairness. That will not be exactly what you want, but should be a decent starting point from which to explore the solution space without foregoing a competent modern AQM configuration until you converge on your optimal settings.