If they spam projectiles, jump above them and make use of your air mobility to get in, or powershield them, walk forward (because you can't shield at the beginning of dashes, and from walking you don't lose a single option you have compared to standing), PS again if necessary and once you get in once close enough (which is pretty easy since ZSS has much good mobility) rush into them and punish them (or pressure them, if not punish is guaranteed). And learn how much lag each chars' projectile has, so that you can be sure when a punish is guaranteed after shielding one, and if . If you're facing ROB I recommend baiting out his projectiles first and then rush him down during the time he can't use them (Robo Beam can only be thrown out again after 4 seconds, and Gyro has to disappear first and it has to first stop rotating on the ground before it does, which takes like 2 or 3 seconds). Zair is also great to frustrate opponents trying to shoot projectiles at you because of its very long reach which makes it easy to poke them out of trying to throw out a projectile. On top of that if it hits them it could lead into dash attacks which then leads into juggles as I've written below. With proper positioning and use of stage control they'll really struggle finding a good place to safely shoot projectiles at you. Paralyser can interrupt some projectiles pretty well too, but not that well vs others, like Sheik Needles.
Mix ups are great yeah. That's part of how you play ZSS. Learn to fast fall well and space well, that'll help you with mix ups. For example, ZSS can fast fall pretty quickly after jumping (both short hop, full hop and double jump). Like, a spaced Nair or Bair is safe on shield, but if they shield it and keep doing so and shield the Ftilt, you'll be safe but it can be hard to keep the pressure if that's all you do. But if you mix up FF aerials, with FF empty jumps and non-FF aerials, it'll be much trickier for them to know when they're able to punish you. They won't know when you''ll hit their shield, which regardless they won't be able to punish you, and they won't know even if you'll hit their shield at all. They'll eventually get caught by the aerials or tricked by the fact that you didn't touch their shield and they'll probably attempt and OoS option just to get dash attack or something else like Ftilted by ZSS (I'm able to bait the OoS option very often with empty jumps and then punish the attempt with dash attack on reaction). Or if despite all they just keep holding shield after this jump mix up, you can grab, which can be risky (but also very rewarding), or reset the pressure and again jump and once again force them into this scary situation which when executed properly will result in a reset back into neutral for them at best with a weak punish. These aerials are very difficult to anti-air when spaced correctly, especially when you are unpredictable with them. You might think first that "but they could roll away". However, that's also a risky option for them, because you can react to that after they react to your jump, and then punish the roll away with dash attack (it's easier when you empty jump because you'll more frames when landing, as landing has only 2-4 frames landing recovery frames while Nair has 10 frames and Bair has 11 frames). And if they roll into you, you could Utilt on reaction. And these aerials have too little lag to be punished with sidestepping and doing that could just lead to it getting baited, or if you're able to punish it on time, reset the pressure. Though some chars can crouch under Bair, you can always with with Nair low enough and Bair has very little landing lag and crouching still loses to some options like Dair, and once they push that button after crouching (which they can have a hard time telling when's a good opportunity to do so when you mix your FF and spacing effectively) they'll leave themselves open to a counter attack. So again it's still a situation in ZSS' favour. It's very easy for ZSS to land outside the range of the anti-airs because of her long range moves and her air mobility. So that's an example of how mix ups greatly helps for pressuring opponents.
Another good mix up is to mix between charges of paralyser and that way once again can be difficult to deal with when used correctly. It can be annoying to them because it slowly moves forward to them and when mixed they won't know when to shield and how long to hold it. And from long enough range jumping won't help them much because you'll be too far away to be punished. Be more careful with this vs Diddy and Sheik though cause they have better options than almost everyone else to deal with Paralyser. It's a reason why I'm more careful with that vs them. These kinds mix ups often force opponents into shield, and once you do they'll leave themselves open to grab. ZSS is a pretty read based character, so you often will have to make guesses (although you can be very safe with them as you may have noticed). But the rewards she gets from reads really pay off. So definitely always check how the opponent reacts to your actions and ADAPT to that. Also ocasionally using mixed charged Dsmashes in neutral is pretty safe as the only drawback it has is its 20 frames start-up (watch out for well timed aerials above the Dsmash hitbox though, but even then you could stop the Dsmash early and proceed to anti-air afterwards. Dsmash has too little lag to really be whiff punished on reaction). It can make them think twice before rushing into you from the ground, as it stuffs such kinds of approaches very well and is safe on shield (or at least that's how it seems like from my experience). So yeah mixing up stuff will be more effective once you become good at understanding from which ranges you can be attacked and space your positioning very well in general (like you dash to shield from a range which is safe, from too close you're stuck with not being able to shield for example). Optimal positioning will limit the opponent's options, making it much more likely for a read to hit them and have take control over their actions in general.
Uair strings in the air (especially once it starts putting opponent into tumble state from around 30%, weight dependant) into Uair, Fair, Bair or Up b. Landing Uair into Utilt at low %s. Dthrow Fair and Dthrow Uair. Fair is pretty guaranteed too after Dthrow (though it stops being as guaranteed at high percents compared to Uair) and can put them offstage and in the corner of the stage. I also like to ocasionally attempt to go for a Bair after Dthrow at %s Bair KOes but Uair does not. So depending on the situation Dthrow Fair is better than Dthrow Uair. And yeah doing the same combo over and over isn't always the best idea, because sometimes going for another route (like Fair instead of Uair after Dthrow, and Bair after Uair) gives you better positional advantage or better damage from the combo. Dsmash into almost anything. Uncharged paralyser into stuff depending on from how far away it hits (if hit from too close you'll be earlier in the recovery frames of the moves, making it not combo into grab but still into things like Dash attack or Utilt). Fully charged Paralyser confirms into just about anything however. Nair into grab at low %s and between around 50-80%, Nair into Down b depending on DI. Zair into dash attack at just about any %. Jab 1 can lead into Up b or Utilt from closer range, depending on character (floatier chars will get hit even on the ground easier, chars like Sheik and Diddy have to be hit out of the air or else they'll have time to shield). A lot of ZSS' combos require good hitconfirming and reactions to DI. Like some follow-ups are unsafe but still with quick enough reactions always possible to tell before you do that if that move hit them or not, like Zair into dash attack. So you gotta be very quick with your decision makings. Though practicing them in training mode is still a very good idea to check when different things true combo and to memorise the combos and like when Uair starts to tumble them.
I hope this answers your questions ^_^.