I'm a grade school cafeteria manager and mom of three teenagers. The best resource I've ever seen for reassuring moms about picky eating is the book "Feed Me I'm Yours." It gives surprising info about how small a portion a child actually needs and has good recipes with hidden veggies.
But you really probably shouldn't worry too much if he's not either gaining weight too fast or losing it. If at all possible, make the crackers whole grain (wheat thins and triscuits are good ones)and cheerios are vitamin fortified. Read the boxes of granola bars and try to find ones with more fiber and whole grain (the first ingredient should say whole wheat or whole oats, etc.) and little or no hydrogenated vegetable oil or high-fructose corn syrup. If he drinks more than a couple of cups of juice a day, you might want to water them down, as that's a lot of fruit sugar and he's getting more calories than fruit value (you are using 100% juice, aren't you?) So try to make what he likes the healthiest version you can get.
Then try getting some fruits and veggies, fix a plate of them for a snack, and offer them to your older boy, your husband and yourself. Make sure you tell the five year old that these are just for grownups and big kids, not for the little ones, and that he and his baby sister aren't old enough to like them. Tell him you know he won't like strawberries, especially dipped in yogurt dip. Then you all eat them right in front of him, talking about how good they are. See if he appears interested, but ignore him. If he asks for a bite, tell him you don't think he'd really like it. Get him to kinda beg for a bite, and then say "okay, just one bite, because you probably won't eat it and I don't want to waste anything this good." Lots of times, kids will eat anything they think is special food.
Another way to get kids to try things is to invite friends over to play, and offer them the foods you want your son to like (you might check with the friend's moms and find out what their kids will eat that yours won't, like raw broccoli or spaghetti, etc.) I've noticed at lunch at school that if one kid really likes a food, often all their friends want to try it, too. But not when Mom is the one pushing it.
So that food doesn't become an issue that he uses to irritate you or get what he wants, ignoring what he does or doesn't eat is a good idea. Just offer him things, or put them on the table and don't offer him any, and then don't comment on what he eats. If he tells you he likes a new thing, you can say "good, I like that too!" But food isn't the main topic at dinner, what we did today is a better topic.
Children grow out of being so picky as they get older unless you have made an issue out of it, and then they milk it for attention. But they also have personal likes and dislikes, just as you do. I never made separate dinners for my kids, but I'd make something like tacos and they could have a taco salad, a soft taco, a hard taco, etc. with a variety of veggies and cheeses to choose from. Each kid liked different things, but it was all the same dinner. Some kids liked spaghetti with sauce, some with just cheese, etc. By the time they were six, they could make a peanut butter sandwich or a warm cheese sandwich (a slice of cheese on bread, heated in the microwave for 10 seconds.) If they hated what we had for dinner, they could make themselves a sandwich.
Oh, yeah, buy orange juice with calcium in it to help make up for the milk, and encourage the yogurt to make up more. And don't worry. He'll be fine.