Strongest would probably be either Water or Fairy. Both types are amazing both offensively and defensively, and commonly get coverage for types that resist them. Water by itself is probably slightly weaker due to the types that resist it (Grass, Dragon, and opposing Water-types specifically) generally being more common, but the fact that Water has its own field condition, Rain, that powers up all Water moves gives it a bit of an edge offensively. Fairy on the other hand has fantastic coverage offensively, and defensively resists important types like Dark, Fighting, and is outright immune to Dragon. Its only two weaknesses are also fairly uncommon offensive types.
The worst typing would have to go to either Grass or Ice. Grass has way too many weaknesses and very poor coverage offensively. It has a couple important resistances, namely to Ground and Water, but these usually aren't enough to offset its shortcomings, and pure Grass types are rarely viable except for Pokemon like Serperior who get to spam a base 130 power STAB move that boosts its Sp. Atk by 2 every time it uses it. Ice is famous for being the worst type defensively, no contest, which is sad because GameFreak seems to enjoy making defensive Ice types. Offensively it's quite strong and hits several important types very hard, like Flying, Ground, and Dragon, so I'd actually put it slightly above Grass, at least by itself. Ice may be useless defensively, but Grass is useless both offensively and defensively. Grass does admittedly work in some type combinations, such as Ferrothorn's Grass/Steel typing.