It is an object you are creating (the class, or type), and an instance would be when you are referring to a specific individual id of that object. The two have different ways to access them, and the application will have a massively different effect.
In your code there is an example of where you are not making this distinction:
Code:
if image_xscale == 1.2 instance_destroy(obj_nspdsound)
when you are doing the instance_destroy it will be applied to every instance that is obj_nspdsound, because it is using an object reference. So, even though the code is brought about by the circumstances of the instance running it (image_xscale == 1.2 is a code that uses its own specific details) the end result will be applied to every instance of obj_nspdsound because you aren't using a function related to "self" rather than the object.
Code:
if image_xscale == 1.2
{instance_destroy();}
would only destroy the instance that has met this condition, rather than every single one that currently exists, as it is applying it to itself