i think arrays are a bit complicated to start with... well there are many different types of variables. almost ANYTHING can be saved in a variable. there a boolean variables (which are simply true or false) integer (-2, -1, 0, 1, 2...) real (-2.345, 1.2343, 3, 3.5...) and strings which are used to save text (e.g. names). besides those basic types regions, units, unit-types, cameras, sounds, buffs, quests and a lot of other things can be used as variabletype. as said before you have to declare them with "set variable". instead of entering a certain value you can sometimes pick an object from the map (e.g. a unit) or from a list (item, unittype).
you can make some kind of "library" at mapinitialization to define the initual values and the constant values. e.g. if you have a certain value which is used a lot of times in the triggers but you also have to change it a lot (for balance or whatever) you might want to put it in the initialization for more overview and less work to change the values.
anyway, here are some examples for common usage of variables:
integer: to count the number of certain events, to have a certain value to compare the number of units or players in a group, as ability or herolevel, as expvalue, as hitpoint or mana PERCENTAGE, as arrayindex, as variable for "for"-loops
real: as hit- and manapoints (although displayed as integers they have REAL values), as value to be added to herostats, as coordinates for a point
string: as displayed textmessages, as names for almost anything, to analyze chatcommands, as password/savecode
as for the other types of variables: they are often used to save the "last created ..." sound for example so you can stop the sound even later (without saving it you just have "last created sound" as value to modify)
however i think you might search for some examples. ill do that sometime but i just noticed that i got only 20 mins left till i have to go to school so cya XD
if requested ill also explain the versatile usage of arrays and loops.