How to access data related to individual particles? I would like to create simple drivers to manipulate individual data points for things like Particles and Array Modifiers.

Just as an example, when I create a particle system, if I create a driver for the Size parameter, it changes the size of all the particles simultaneously (as it should).  But I would instead like to access the size for each individual particle.

For something like an array modifier, I would like to access the data paths for each instance.  For example, add a randomized driver to create different iterations of the original mesh.

Are either of these examples possible?
As Sambler said, Animation Nodes is your best option. Here are some examples:

Controlling the size of individual particles based on time (They get bigger as time passes):



Controlling the rotation of individual particles based on a random vector.



Wiggling the size of instances cube: