/ip firewall filter
add chain=forward in-interface=vlan10 out-interface=!ether1-gateway action=reject
This is clear: it means any traffic coming from a "vlan10" port, not heading for the gateway-port, is rejected.
Ok nice. But as you said, my understanding of VLAN and routing is not clear yet - couldn't I do the same thing, and replace "vlan10" with (say) "ether3"? Ok, the consequence would be that ether3 could only communicate with ether1, and NOT with ether4, which might be designated as part of vlan10. So the VLAN is just a group of ports - which is exactly what you said.
No, you would replace vlan10 with the name of the bridge interface that is bridging the individual ports together into a vlan... Remember that IP firewall only refers to IP interfaces. When you make a bridge, it's the bridge interface itself that is the Mikrotik's "connection" into the VLAN you created. So that's why you put IP services on the bridge interface itself (such as DHCP server) and firewall rules. If you make a firewall rule that matches in-interface=ether3, then the rule won't ever match any packets because the IP layer of the router receives these packets via the bridge interface. (if you enable use-ip-firewall=yes on the bridge, then the bridge will check the firewall rules while forwarding ethernet frames across the bridge as well, but this is a 'special' case, and has performance penalties, etc)
And I get that. But does that mean that VLAN's dont inherently make sure that traffic within a VLAN stays VLAN-exclusive? I thought that was one of the major reasons and goals of VLAN's to make sure their traffic stays private?
It is a goal, and it does what it says it does - it isolates hosts in vlan10 from hosts in vlan20 . . . at layer 2 (ethernet layer). This means that broadcasts from hosts in vlan10 will not reach hosts in vlan20 (e.g. no DHCP requests, no ARP requests, no auto-discovery protocols like UPnP, etc).
However, since the Mikrotik is also a ROUTER, then if hosts in vlan10 send IP packets whose destination are in vlan20, then the router functionality will quite happily forward the IP packets between the two vlans. That's the very reason that they invented routers - to connect networks together. (hence the name "internet" - inter-network protocol.) It's this forwarding behavior that is being limited by the firewall rule. And since the router is connected to vlan10 via the bridge10 interface, then the firewall rule must refer to the bridge interface.
Now, if you're using the on-board hardware-based switch to do the VLAN separation, then the "ether1-master" interface is the router's logical connection into the HW switch. Therefore, you are indeed trunking between the router and the switch. Thus, you must put vlan interfaces on "ether1-master" in order to send traffic into the switch with the correct vlan tag on them. Note that the HW switch can then strip the vlan tags and send a particular vlan's traffic to the real ether1 interface and prevent the other vlans from existing on ether1. It's a tad confusing, but it makes sense once you look at the block diagram for your router.
I know you gave your firewall rule as an answer to my question, "how do I set up VLAN access ports ONLY - without a trunk port". So I guess under an "ordinary" VLAN setup, the firewall rule would not be necessary. It's just another means how to achieve my goal.
My goal being: I have one router with many ports on them, and some of them I want to group to a VLAN, while giving them access to the internet (and of course making sure that VLAN traffic stays private within their respective VLAN)
The part that confuses me is: why do I need to use a "trunk port"? It's usually only required to connect several routers/switches, that are supposed to handle the same VLANs.
I mentioned the trunk port because I was assuming that you were using the HW switch. If you're just creating some bridges and connecting ports A, B, C to bridge1 and D, E, F to bridge2, then it's a touch misleading to use the term 'vlan' to refer to this, because the bridges aren't really doing any kind of vlan tagging. Each vlan is a virtual switch, and all connected ports may communicate with each other. It's not incorrect to use the term vlan, but it's misleading because you can make lots of bridges and never use a single vlan identifier anywhere.
TL;DR version:
Make bridge10 and bridge20
Put IP addresses on bridge10 and bridge20, dhcp service, etc.
Connect the desired physical ethernet interfaces to the desired bridges
Limit IP forwarding between the bridges using firewall rules.