There was one excellent tutorial I used at InformIT this helped me understand buffer objects and their manipulation better. Most of the systems used in the particle engine were developed from my experience coding a 2D particle engine in python.
The particle engine can handle a significant number of particles in real-time, and computes full phong shading for each particle.
The goal of the project was to create a particle system capable of simulating glass shards from a broken window, or a cloud of dust. The baseline I aimed for was 100,000 3D particles at 60fps guessing that it would perform at least 4 times faster than a 2D python based particle engine I wrote in high school.
By: Andrew McMuldroch