I agree with PP - lots of LOs only eat one or two "good" meals a day and often they aren't that hungry for their dinner. Often what we as parents perceive as being fussy is just a lack of hunger. From what you've written, he's getting lots of opportunities to eat each day so probably just isn't that hungry by dinner time.
It looks like he gets quite a good sized snack at 10am. Maybe try reducing it to just the yoghurt (or fruit/raw veg) and see if he eats more at lunchtime then?
Since he seems hungriest at breakfast time, you could try offering less traditional breakfast items then (e.g. what you might give him for lunch/dinner), to provide a bit more variation to his diet. It can be a good time of day to introduce new foods. LOs will often try things at one time of the day that they would refuse at other times. If he's not hungry at dinner one evening, could you save him a portion and then heat it up to have at breakfast or lunch time the next day? He might be more inclined to try it then.
Some easy ideas of things you could try at breakfast might be mushrooms (raw or sauteed in butter), cucumber, pepper (cooked or raw), tomatoes (raw or e.g. grilled), carrot sticks (raw or cooked), pieces of avocado (yummy with scrambled eggs!). Could you offer something like that at the 10am snack or with the egg at lunchtime too. If he doesn't eat it, don't worry. It's just there if he'd like to. One day he might try it.