Small particle engine
A few notes:

for(Integer index : this.getBlockedParticles()){
    this.getParticles()[index].render();
}


This should be:

for( Particle particle : getBlockedLivingParticles() ) {
  particle.render();
}


By maintaining a list of living particles, you can eliminate a number unwarranted calls to render and eliminate the following check:

if(!this.isAlive()){
    return;
}


Assuming the width and height cannot change while rendering:

    GL11.glTexCoord2f(0, 0);
    GL11.glVertex2f(-PARTICLE_TEXTURE.getImageWidth()/2.0f,
            -PARTICLE_TEXTURE.getImageHeight()/2.0f);


As Marco commented, that duplicate code can be refactored:

    float width = PARTICLE_TEXTURE.getImageWidth() / 2.0f;
    float height = PARTICLE_TEXTURE.getImageHeight() / 2.0f;

    GL11.glTexCoord2f(0, 0);
    GL11.glVertex2f(-width, -height);


This will reduce the number of divisions (an expensive operation) from 8 to 2. You'll also note that there's a relationship between glTexCoord2f and the sign of the width/height passed to glVertex2f, which can be abstracted.

Architecturally, I'd be concerned that the Particle can only be rendered using the GL11 API. Use an Abstract Factory to decouple the rendering device from the application logic. This will also help determine the slower parts of the code (i.e., you could employ a dummy particle that has no rendering device to quickly and easily tune the other parts of the application).

One other trick to speed things up: if all calculations can be made with integer math, then instead of diving by 2, bit-shift by 1.