Induction Motor Control through PWN of arduino

hey guys I am not an engineer or any professional, just a hobbyist. So i though maybe i can design a circuit which could control the speed(rpm) of Induction Motor which runs on 110v. First i though maybe i can use a SSR fed by PWM to switch ON and OFF a motor but many guys told me that i should use a OPTOCOUPLER TRIAC instead of ssr for switching(why?). A little bit of research also told me that i must use a zero crossing detector(why?). And will this diagram do the trick?

Not possible with PWM.
You can vary the speed of a 3 phase induction motor with a VFD (variable speed drive) that you control with the Arduino.
If its a single phase capacitor start induction motor, you cant vary the speed at all.

Single-phase induction motors are basically large inductors strapped across the mains supply, any attempt to PWM
them will generate massive voltage spikes and total chaos, I suggest you don't go there...

Some motors have multiple windings which can be switched in and out to change speed, but you get a fixed set
of speed/power steps. You can wastefully reduce power by switching in a series resistance too I think. But
single phase induction motors are not designed for speed control, they prefer one speed, set by mains frequency
(they can only be efficient at one speed).

Of course you can change the speed of an induction Motor, but not by PWM but with changing the frequency. Therefor you need a bit more Hardware than a arduino...