Add a Custom c++ Class to Blender and drawing it in the viewport using an Addon
I suggest writing your code in Python first to keep it simple and get results quickly (especially when you have little experience with where are the bottlenecks).

Then you need to benchmark it and find where the bottlenecks are.


if they are on Blender's side, porting your code to c/c++ will have little to no effect. Building your own Blender is the solution.
if they are on your code's side consider using Numpy module rather than writing custom C/C++ code first. If you want speedup on arrays or math, it is often enough. Threading can also help.

For most use cases when you need to wrap C/C++ classes the ctypes module is all you need.

You can also use Cython to expose parts of C/C++ library to Python.

For another solution for Python binding to C/C++ code look into Boost.Python:


  The Boost Python Library is a framework for interfacing Python and C++. It allows you to quickly and seamlessly expose C++ classes, functions and objects to Python, and vice-versa, using no special tools



Last thing to consider is that Blender 2.8 version is behind corner and a lot of things will change including the particle system. Some coding time on an addon this big might be wasted when it will release and you will have to re-work it or it becomes redundant by the new native system.