ParticleSystem(int num, sf::Vector2f pos, sf::Blend::Mode mode, std::string file, ParticleSystemType type)
The std::string can be passed as const-reference (const std::string&), avoiding an unnecessary copy in some cases. For sf::Vector2f, a const-reference doesn't pay since 2 floats are very cheap to copy, and since there is no dereferencing necessary with pass-by-value.
std::list<Particle*>
Use std::list<Particle> or std::vector<Particle>, there is no need for pointers and manual memory management.
delete this;
I would never do that, this is almost always bad design. A class normally doesn't know how it has been created and how to destroy its objects in an appropriate way. The one who calls new should call delete (or leave it to some smart pointer).
inline void SetNumberOfParticles(int num)
inline isn't necessary here. Generally, I would use this keyword rarely. Often, the better choice is to move function definitions to .cpp files, especially because you can change them without recompiling all class clients.
float Randomizer1(float min, float max);
int Random(int min, int max);
I would take these functions out of the Blast class, they are not specific to particle systems. Apart from that, you should probably overload them, i.e. use the same names.
float a = ((((((8 - 5 + 2) * rand()%11) + 5) - 1 + 1) * rand()%11) + 1) * 0.2;
If you already have the random functions, why don't you use them? Your code shouldn't have a single std::rand() call. This allows you to change the implementation of your random number generator, and let the changes affect your system.
for( iter = mL_Particle.begin(); iter != mL_Particle.end(); iter++)
Although the difference is at most minimal, prefer pre-increment (++iter) because you might save an unnecessary copy.
To create a random velocity, I would create a uniformly distributed angle first.
float angle = Random(0.f, 360.f);
Then, using std::cos() and std::sin(), you should be able to create a vector from it. You can still randomize the length when multiplying with a random scale.