Reduce your code, first. In order to demonstrate the problem so that others can help, most of this code can be removed. Two images and two integers, for instance should be enough, with minimal keyPressed and mousePressed functions.
That said, there are also real problems in your code. In mousePressed, for instance, you don't test to see if(mousePressed). It is, that's why mousePressed() is being called. You also call loop(), which does nothing. The loop() and noLoop() functions only determine whether to call draw() again once draw() finishes. loop() will change the sketch mode from "event based" to "constant framerate", noLoop() does the reverse - what you really want to do is simply trigger redraws when necessary, using redraw() at the end of your event handling.
The default Processing framerate is 60, so frameRate(60) will not do anything. You're also using a .vlw font, which isn't actually a font but an image format. font = createFont("Calibri.ttf", 16); is much safer since it'll run on systems that reject the .vlw font (such as when running your sketch in a browser).
Your code also doesn't swap arrays, it reassigns the array variables to point to the same thing. On keyPressed, "positions1 = positions2" means that positions2 is positions2, of course, but positions1 is also positions2. You now have two variables pointing to the same array. Any changes you make through either positions1 or positions2 will now change the same array, and any further key or mouse pressing that does "positions2 = positions1" will now do nothing, because they already point to the same thing, so reassignment will preserve that.
So to best help you out, here's some code that does roughly what you want, to get you started, but I strongly recommend hanging out somewhere where you can ask questions while you're programming (like the Processing IRC channel or the forum), because there's a lot of using the wrong functions and ideas in your code right now, which means you don't understand the language yet and you want other people to look at snippets to say whether or not you're doing something sensible, or something very wrong.
String[] positions, prevPositions;
void setup() {
// setup two identical-content arrays
positions = new String[]{"1","a","b","c"};
prevPositions = new String[]{"1","a","b","c"};
// don't draw at a constant framerate. we'll redraw
// based on key/mouse events
noLoop();
}
void draw() {
// white background, black text
background(255);
fill(0);
// just draw the first thing in "position"
text(positions[0], width/2, height/2);
}
void keyPressed () {
// cache what the array looks like
arrayCopy(positions,0,prevPositions,0,positions.length);
// modify the positions list
positions[0] = ""+ (int(positions[0])+1);
// redraw now that our state has changed
redraw();
}
void mousePressed () {
// revert to previous array. We can only do this once.
// if someone pressed the key seven times, we can't revert
// seven times, because the code only has one history state
// that is updated every time a key is pressed
arrayCopy(prevPositions,0,positions,0,positions.length);
// redraw now that our state has changed
redraw();
}