As a TL;DR direct response to your questions,
I play a lot of mages; some with good waveclear and some without. I struggle a lot with assassins, but mostly ones with strong early waveclear; i.e Talon/Ekko. Zed's waveclear becomes quite good, but not at level 1.
If Ekko/Talon/etc. are pushing you to tower, attempt to manipulate the wave so that it stands just outside your tower range so that you can safely force them to decide between approaching the wave to CS and fighting you where you are most safe. If they leave lane, relentlessly push and only leave lane to assist a fight in vision or over vision (contesting a control ward or protecting your jungler for example). Notably this should take priority over securing CS unless you cannot make it in time so that you do not give up advantages to an assassin for free.
Ekko and Talon always seem to push me in to tower no matter how hard I try to prevent it, and their pushing has such a low mana cost that I cannot keep up. To make it worse, on the off chance I push them in after they leave to roam, I can't roam since they could just be waiting in a bush to kill me.
Roam/follow in a situation where you are ganking towards your strong side where one or more of these advantages exists: Jungler nearby, support rotating, strong vision control already exists in the area, or because your cooldowns (Summoners/Ultimate/etc.) allow you to play aggressively according to matchup should you be caught out.
Also always consider the simple fact that if the enemy champion uses their ability on the wave instead of you, this is the window you should look to trade onto them and chunk enough HP to increase the risk of them continuing to waveclear without interaction. Some matchups demand different things: you go to war over the push or you try to pressure the other champion until you get it.
Also, why do some assassins just have ridiculous waveclear while other's don't? Kassadin's is very very poor until 6, Zed's isn't great until 3, but Talon, Ekko, and Leblanc are all pretty strong pushers at level 1.
Because champion diversity.
Playing against Assassins is unfortunately always a tricky, dangerous game, and the solutions are always multiple choice, but they all have one thing in common based on match-up:
PICK YOUR SPOTS (in other words, as Captain Jack Sparrow would say, wait for the opportune moment.)
Rather than provide specific matchup information (which for me is incredibly simple to obtain by watching pro VODS or other YT guide/tip videos involving the relevant champion picks, I'll suggest a few general rules and observations when facing assassin/high kill pressure lanes:
-
Consider the future consequences of a trade or potential opening for an all-in. Ideally, you make it consistently as hard as possible for the Assassin player to safely/routinely threaten you, which in general means you are almost always saving your crowd control threat spells for defense or when you or they are out of position or have an important ability of their own on cooldown.
-
Respect both what the enemy champion can do and then what your specific opponent is capable of; in other words, play the champion match-up first, and the player match-up second. I am of the opinion that it is much more important to simply try to learn intimately what a champion is capable of or to know what is possible in a given situation than it is to be needlessly afraid of or more respectful of a specific opponent than is necessary. This lets you recognize when they objectively make a mistake, and only afterward if they are able to outplay you under pressure should you mark them as "dangerous".
-
Lastly, do not show weakness to your opponent Nay, show confidence even in retreat. Showing respect to your opponent by playing safely is not the same as playing passively (for no reason). If you can meaningfully interact with an opponent and gradually create opportunities or advantages by doing so, then do so. Playing proactively and getting ganked (as the ancient Korean proverb suggests) is better than creating no pressure at all and bending over backwards to every move from your enemy.