Definitely the best book out there, I think, is Brian's.
Variables are pretty easy to figure out, Crystal Help is where I learned most of my knowledge from. Haven't really used arrays, as Crystal arrays are 1 dimensional, and I haven't really figured them out (don't know how to check that they are correct, so I haven't built them on the fly). Personally, I use delimited strings (I can also pass them in as parameters since I am not sure if Crystal would take an array as a parameter, though you can have Crystal create a parameter that is an array...
the only types of variables that I use are local and shared...global is an option, but it is not as global as shared...go figure.
Just remember, once set a shared variable will keep that value until you tell it to change, so I tend to create formulas in groups of 3, 1 to set =0, 1 to increment and 1 to display the results.
As DBlank states there are tons of posts that I have answered that demonstrate this methodology.
HTH