I don’t really understand layering polygons. Should I put, for example, a pond on top of a forest area or do I have to draw around the pond and keep them as separate areas. What if I wanted to put a small swamp on a national park, how do I determine which will be rendered on top of the other and not hidden?
You can use the layer key to define the layer. I’m not sure this is entirely the correct usage of the key but I’ve used it like this in some places and it seems to work well.
Layering will give a result that looks OK. This will lead to overlapping areas and it can be considered wrong. To prevent this a forest should be drawn as a polygon with holes, and holes should be tagged separately as swamps and ponds and so on. This may lead to complicated situations if, for example, if ponds have islands.
Yes, using the layer tag is wrong. You should look into multipolygon relations
as I had to do recently to get a wood in the middle of a park to show properly (or something like that).
The multipolygon relation is for areas with holes. A park, with a wood inside, is not an area with a hole - the wood is part of the park but still needs to be defined as a woodland area. Layering surely is appropriate for this.
I appreciate that if you’re adding a lake in a forest, you use the mutipolygon, but what about a lake in a park where the lake is part of the park?
Layering is appropriate if there is a “x is above y” situation. It’s not appropriate as a “please render x above y” instruction, that’s the renderer’s decision.
If there is conceptually different information for an area, in your example the vegetation (natural=wood) and the purpose (leisure=park), then these can simply be in the same place on the same layer.