`mangle` is for mangling (modifying) packets, while `filter` is intended to just filter packets.
A consequence of this, is that in `LOCAL_OUT`, after traversing the tables and getting the filtering decision, `mangle` may try to redo the routing decision, assuming the filtering decision is not to drop or otherwise take control of the packet, by calling `ip_route_me_harder`, while `filter` just returns the filtering decision.
Details at `net/ipv4/netfilter/iptable_mangle.c` and `net/ipv4/netfilter/iptable_filter.c`.