I'm assuming both your meshes are 2D planes here.
Knife project is a bit finicky, You have to go into edit mode on your base mesh, then select your "lake" from the outliner, then line up your view to the direction you want to cut, then use the Knife Project tool, it helps when they are not on the same plane to get the best results. It won't remove the inner verts though, you'll have to do that manually.
As for the boolean modifier... The lake will need to be a 3D mesh, it will need some thickness, use a Solidify
modifier on it. You will get best results if it is not on the same plane as the base mesh, in other words, the base mesh will need to be "inside" the lake mesh, also the lake mesh will need to be manifold. If your base mesh has no thickness, then this will cut a hole in your mesh using the Difference
operand. You can then apply the boolean on your base mesh, remove the Solidify
modifier from your lake, then move the lake to be in the same plane as your base mesh, join them together with CTRL J
and go into edit mode and Merge by Distance
. This is the simplest way to fill the hole, especially if your lake has multiple "islands" of vertices.
I recommend you duplicate both your meshes and work on the duplicates in case you mess it up you'll have a backup.
I hope this helps you.