General thoughts: Normal types have really favorable STAB options in GSC; Headbutt in Ilex Forest (+ more buyable in Goldenrod), Strength in Olivine, and one Return a week; earlygame joiners can reliably max out their happiness in time for the E4. Meanwhile a lot of the good TMs in from gen 1 (Ice Beam, Thunderbolt, Rock Slide, Body Slam) are gone, Blizzard/Thunder/Fire Blast are crazy expensive, and Earthquake is near the end of Victory Road. Pretty much every type besides Normal and Water is dependent on their natural moves and maybe element punch compatability to get any sort of decent STAB, and a lot of them lose this lottery. This makes Normal types with mediocre stats better than mediocre-statted Pokemon of other types.
Every gym leader in Kanto is trash in GSC except Blue and he isn't really great, so really Kanto-only mons are only relevant for facing Red.
"Relies on TMs" is not a problem if you have element punch access and decent special: those are cheap, infinitely buyable, and have acceptable power. With Thunderbolt/Ice Beam/Flamethrower not TMs at all in gen 2 those three + Surf are core in-game special TMs.
Pidgeot: 5/10. Early Sand Attack is its only real selling point compared to other birds, in a game where Mud Slap is the first gym TM. I guess Mud Slap doesn't work on fliers but how often is this going to matter before Lance (and 99% of people will either drop Pidgeot by then, or just OHKO his team with something like Alakazam or Suicune). Longterm its stats and movepool are clearly inferior to Fearow and Dodrio but still usable and early enough to except a maxed Return for lategame.
Raticate: 6.5/10. Normal is a really good offensive type for in-game with infinitely renewable Return TMs for lategame, while Hyper Fang is nuts when you first get it. Not much coverage though, especially with Dig nerfed.
Fearow: 6/10. Better stat build than Pidgeot, Drill Peck eventually is nice. Worse than Raticate since there's no Hyper Fang phase, though hitting weakness on some stuff is nice.
Clefable: 1.5/10. Only way to get one maingame is to soft reset for the Odd Egg... yeah no. A shame, it'd be really good otherwise.
Wigglytuff: 5/10. Element punches + Shadow Ball + Strength, that's pretty much the meaningful Johto TMs except Surf (and Earthquake for the last bit). Stats are horribly mediocre though.
Persian: 4/10. Route left of Ecruteak isn't so bad for availability, but with the Slash nerf there's not much going for it.
Farfetch'd: 3/10, I'm being nice to it for HM slaving.
Dodrio: 3/10. Nice stats, but only available at L30 right before Victory Road is not a winning formula.
Lickitung: 2/10. Strength + element punches is nice, but those stats are really not salvagable.
Kangaskhan: 1/10. Postgame only and underlevelled? Yeah right.
Tauros: 8/10. Reasonably early, great stats, can get Earthquake to demolish Normal resists lategame. Surf off 40 SpAtk is pretty garbage but can probably Ko a few underlevelled Gravellers since this is Johto.
Ditto: 0.5/10. I actually had to breed in Pokeniu to get a Sunflora with both Mega Drain and Razor Leaf for early/midgame. Realistically though, 99.99% of players are never going to breed in-game, and Ditto is worthless outside of breeding.
Furret: 6/10. Worse than Raticate but not by that much. Normally I'd mock Surf off 45 SpAtk, but with Johto's level curve you could probably 2HKO some underlevelled Gravellers.
Noctowl: 2.5/10. Guys, he has 50 base attack vs Pidgeot's 80. That's significantly worse, with only Hypnosis and special bulk to make up for this until Dream Eater at stupidly high levels. It has its uses when you are intentionally making a team of all garbage Pokemon *cough* so I can't score it too low, but it's still pretty bad.
EDIT: After checking some faqs, I just realized that Noctowl can learn Flash in gen 2 where it is 70 acc but not in gen 4 where it is 100 acc. GAAAAAAAAAMMEEEEEEFREEEEEEEEEEEEEEEEEEEEEAAAAAAAAK
Togeti: 1.5/10. I'll give it half a point for not being total bottom of the barrel in Pokeniu, and that's probably being generous.
Aipom: 2/10. As quite possibly the only person here to have ever used an Aipom in-game, I feel the need to comment here specifically. Aipom is surprisingly competent at sweeping randoms in this gen, both wild and trainer, because Normal is that good of an attack type for much of in-game. High speed and STAB strength right off the bat go farther than you might expect, unless you remember how sad the level curve is in GSC. Flipside, it's almost completely useless vs bosses and almost every other physical normal type outclasses it, usually by enormous margins, so the rating is still bad. I just can't quite bring myself to say 1/10 bad.
Girafarig: 6/10. Competent, but a bit too late for me to give it credit for full power Return.
Dunsparce: 3/10. Pretty average, except for that awful 1% encounter rate.
Granbull: 5.5/10. Apparantly its availability is actually decent in Crystal (30% rate on the route before Goldenrod in daytime). Speed kinda sucks, but otherwise respectable.
Ursaring: 7/10. Never actually used one before, but it's apparantly available really early in Crystal and its lategame performance is definately outstanding, with 130 attack, STAB Strength/Return, and enough special attack to make the element punches credible options. Speed is bad but 55 isn't completely unusable, at least.
More later, need to look up where some of this stuff is actually found in-game.
Porygon2: 1/10, yeah no to it.
Stantler: 6/10. Better stats than Furret but comes much later, not thinking too much on this.
Smeargle: 1/10. You can probably get Sleep Powder on it with fairly little effort, but that's about it.
Miltank: 7.5/10. Largely inferior stat spread to Tauros for in-game, but Milk Drink is nice.
Blissey: 1/10. Not only is it postgame only, not only is it really hard to catch, but it has NO OFFENSE WHATSOEVER before it evolves, thanks to 35 special attack and no Seismic Toss in GSC.