CPU VS GPU based particle?

Hello, what is the explanation, what are there, what is the difference? Why would one use cpu over gpu?

“CPU and GPU sprites behave similarly, but they have some key differences. Some of the features available in the CPU particles (such as light emission, Material parameter control, and Attraction modules to name a few) are not supported in GPU particles. However, what they lack in supported features they more than make up for in sheer numbers; the GPUSprite TypeData allows you to spawn tens to hundreds of thousands of particles without a severe performance impact. This of course will significantly change the way we approach doing effects such as snowfall, rain, or sparks. To use these particles, right-click on the empty space under the Emitter header and select Type Data > New GPU Sprites:”

"Bear in mind that some modules will not support GPU particles. If you are using incompatible modules in your Emitter, those modules will be highlighted in red. "