This is awesome.
Tech demos like these are a good way to learn a library and graphics programming before diving nose-first into a monstrous game project.
Two things are contributing to your slow saves. Firstly, you are getting each individual pixel in the screen, which can be very costly since it may require hundreds of thousands of texture transfers. (Slick's getPixel wasn't really designed for this use.)
One solution would be to copy the entire screen to a Slick Image (using Graphics.copyArea) and then saving that with Slick's ImageOut utility. A better solution would be to render the effect to an offscreen image (using Image.getGraphics) instead of the screen; then simply pass the image to ImageOut.
Also, for future reference, it's more efficient to use the backing pixels of a BufferedImage instead of relying on getRGB/setRGB -- see this post
I hope you don't mind: I tried re-implementing your idea using shaders (assuming you aren't already using them). Hopefully the demo shows an alternative way of achieving a starburst effect (on the GPU) as well as some standard Slick practices (like image graphics and Image IO).
Take note of how I'm using createOffscreenGraphics and saving images with ImageOut -- you will probably want to do the same for efficiency (my app saves a 2048x2048 image in a split second). I included a couple of shader effects (vignette, grayscale) which you can comment out and play around with.
Of course; a shader approach has its own limitations -- including non power of two sizes (it would take a bit of tweaking), aliasing and blurring at larger resolutions, etc. This is why your current approach (polygons?) looks better.Starbursts.java
You could even take your application a step further -- generate your starburst image using polygons, and then
add GLSL post-processing like vignette, blurring, and other effects