Isn't black RGB (0,0,0)?
Precisely. cocos2d uses additive blending equation (glBlendEquation(GL_FUNC_ADD)), so with source color of RGB(0, 0, 0) and your blend function resulting color is equal to destination color (background).
cocos2d doesn't expose blending equation. You can use {GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA}
as blend function or subclass CCParticleSystem
and specify different blending equation in its draw
method.