Limit Rotation Local Space Not Working
About your second problem, I could not reproduce it with the file you’ve shared, but maybe apply the scale (even though it should not scale the child when you parent)?
About your flap :
First thing, you were animating the rotation of the empty, but as it is not aligned with the global orientation anymore you may have bad rotation results : Rotations, once keyframed, do not consider the object’s own local orientation but the global orientation. So when you are supposed to animate an object that is not aligned with the global axis, the solution, before desaligning the object from the world orientation, is to parent it to an empty (or any other object), then orientate the empty the way you want in your scene, then animate the object, not the empty. As the object is parented to an empty, its new global orientation is not the world anymore, it is the parent local space, so any keyframed rotation will happen on the parent's local axis, if the parent is orientated the way you want in the 3D scene, the child object will rotate the way you want relatively to the world space.
This is also why your Limit Rotation constraint on local space didn’t work: Local Space will consider the object’s parent local space, but the empty has no parent, so the constraint won’t affect it. You need to give the constraint to the flap.
So, to fix the problem:

In Edit mode align the flap with the global orientation, and put its origin on its axis position:



Parent it to an empty:



Move and rotate the empty until it fits to the wing:



Give a Limit Rotation/Local Space to the flap (not to the empty):



Open the N panel, animate the flap on the X axis: