How to create and extrude aribitrary, complex 2D shapes

Think of a single jigsaw puzzle piece. It is cut from a flat sheet of cardboard but can be any shape the designer chooses.

I want to be able to create such an object, as though it were cut from a large flat sheet of material with a given thickness, in any complex shape I desire.

I need to model 12 such objects and none are alike in shape except that they are cut from a flat sheet.

How can I do something like this?

You can draw your shape from the top view on top of the plane with a curve, when you have the shape you want, go to the curves geometry setting an give it some extrusion to go through the plane.
Convert curve to mesh and give it a solidify modifier with a very small thickness (0.001).
Use a Boolean modifier on your plane and cut through it with using the curve/mesh with the difference option.
Apply the Boolean.
With the plane in edit mode select the shape in face mode and go to Mesh-seperate-selection and you are left with 2 objects the shape and the plane with the shapes hole in it.
A bit tedious but it works! Unfortunately the knife tool only does straigt lines!

That’s completely insane. I’m not doing that.

Blender has the worst bezier curve drawing of any system I’ve ever used and doing what I asked is like the basics of modeling fuctionality.

I’m just going to model it in CAD and import the file.

Why is Blender like this? Does anyone know?

In blender you can simply draw the curve if you want
Edit I have made a short video for you which is more specific to your needs.

Edit: My first answer was a little complicated as I was thinking in terms of cutting the shape out of a plane (and keeping both objects) not making a single standalone piece.