Creating a smart restaurant menu
Here's how I'd do it...


Create a channel called Allergens with a custom field for the icon. If the icon is an image, make it an assets field.    
Create a channel called Ingredients with a custom field for the allergens. It will be of the Entries field-type and only allow the user to select Allergens entries.
Create a channel called Recipes with a custom field for the Ingredients and another custom field for the description of the dish. The Ingredients field will be of the Entries field-type and only allow the user to select Ingredients entries. The description field would probably be a simple Rich Text field.
Create a channel called Menu. If there is only one menu needed, I'd probably make it a Single. If more are needed, make it a standard channel. It'll need a custom field for the Recipes, which would be an Entries field where the user can only select Recipe entries.


There are other ways of doing it, but this would probably give you the most flexibility in the long run, and keep things simple for the users.