How does WordPress decides how many sizes of an image to create?

Well it really depends on how many image sizes are defined through themes, plugins, settings and the WordPress itself. Some of which you can see in the media section in WordPress settings in admin panel.
One thing you can do is to install a plugin like [AJAX Thumbnail Rebuild] and go to it’s page in Tools section of WordPress dashboard and see how many image sizes you have.

also in this page people offered pieces of code that can generate a list of image sizes for you.

Note: if you have a small picture, WordPress doesn’t usually try to make it bigger than its original size. So it make sense to not have bigger sizes of a small image. For example if my image is 300x400px, WordPress isn’t gonna make a different version of it when it needs a 650x820px picture somewhere. It just uses the biggest, closest possible variant.