There are 2 reasons for using base64 string to load images in web apps.
When a browser fetches an image from a URL, it does so asynchronously. A browser can have upto 6 asynchronous requests pending at the same time. So if you have 20 images (or .js dependancies) in a document, the last 14 will block until the first request is complete in a queue.
So people who *really* care about speed will encode the image data as a base 64 encoded string. This is about 30% larger than an image file, but it has the advantage of being able to be embedded within the HTML document, so no independent, potentially blocking, asynchronous request has to be issued.
So that't the mainstream reason why people use base64 strings with images.
Because the browser can load an image from a string, it also provides the opportunity to programmatic generate the string and alter it. So you could write some JS that loads an image, changes the colors, serialises to base64 string, then inject into a sprite via a base64.
If you have lots of images derived from one base image, you can save a ton of bandwidth rather than encoding every color and making the user fetch every hue of image from an URL. (an images are the biggest bandwidth hog in web)
I have no clue whether this is a feasible strategy within construct 2 though, I am talking from experience writing normal web apps.