IP firewall rules wihen default chain action is DROP

For that particular example, you’re right, it doesn’t make sense, since there aren’t any accept rules later on. Perhaps that example was made such that it could be inserted into any rule set with no modifications.

But a better rule set would indeed be to just accept the allowed and drop the rest, so in that example:

/ip firewall filter
 add chain=forward comment="Accept established and related packets" connection-state=established,related
 add chain=forward comment="Accept new connections from local network addresses to internet which should exist in public network" connection-state=new src-address=192.168.88.0/24 dst-address-list=!NotPublic in-interface=LAN
 add chain=forward comment="Accept new connections from public internet which should exist in public network" connection-state=new src-address-list=!NotPublic in-interface=WAN
 add action=drop chain=forward comment="Drop all the rest"

Though to be honest, I think a more long term optimal rule set also involves using custom chains to group rules that have passed previous checks, e.g.

/ip firewall filter
 add chain=forward comment="Accept established and related packets" connection-state=established,related
 add action=jump chain=forward comment="Go to LAN related checks"  connection-state=new in-interface=LAN jump-target="check-lan"
 add action=jump chain=forward comment="Go to WAN related checks"  connection-state=new in-interface=WAN jump-target="check-wan"
 add action=drop chain=forward comment="Drop all the rest"

 add chain="check-lan" comment="Accept new connections from local network addresses to internet which should exist in public network" src-address=192.168.88.0/24 dst-address-list=!NotPublic

 add chain="check-wan" comment="Accept new connections from public internet which should exist in public network" src-address-list=!NotPublic

If no matches are found within a custom chain, it returns to the chain it jumped from, and rules continue once again from there to the bottom. So the effect of this is the same as the above, except that this second one can more easily be extended to include more complicated checks, while still being easy to read from a human standpoint.