I know you already solved this but,
Right off the bat, I see this line:
iRandomQuestion = random(1,(questions.length-1))
It'll never return 0, therefore you'll never see the first question. As for your problem, your code snippet shows no reason as to why the question and its answers wouldn't match up so the problem is definitely somewhere else in your code that you haven't shown.
And just a tidbit on your button function, might consider breaking it down into two functions and making the selection more modular.
I would find this much easier to read and reuse:
function button(sprite)
x1 = getSpriteXByOffset(sprite) - getSpriteWidth(sprite) / 2
y1 = getSpriteYByOffset(sprite) - getSpriteHeight(sprite) / 2
x2 = getSpriteXByOffset(sprite) + getSpriteWidth(sprite) / 2
y1 = getSpriteYByOffset(sprite) + getSpriteHeight(sprite) / 2
if pointInside(getPointerX(), getPointerY(), x1, y1, x2, y2) = 1
if getPointerState() = 1
exitfunction 1
endif
endif
endfunction 0
function pointInside(px, py, x1, y1, x2, y2)
if px > x1 and px < x2 and py > y1 and py < y2 then exitfunction 1
endfunction 0