Create menu from multiple meals relationship
You'll need a menus table as you've specified (albeit with a user_id field), so menus(menu_id, user_id, name)

I would then include a linker table to join a meal to a menu, seeing as a menu can have multiple meals and a meal can belong to multiple menus meal_menu(menu_id, meal_id)

EDIT

As Colin 't Hart suggests, for the second part of the question I would also have the chef and user share a common table (probably called users) as they're sharing fields. You could then have a roles table that links each user to a role (chef, diner etc.)

That way, there's only one link from any type of user to a menu.