To illustrate the method (2), I deleted ALL unnecessary objects, IPOs and code off one of my old-project files (made on 2.46).
So on your default cube, called “Cube”, you have IPOS like this (equivalent to translating the cube 4 units on X-axis only):

and the code:
from Blender import *
sce = Scene.GetCurrent()
ob = Object.Get("Cube")
me = ob.getData(mesh=1)
context = sce.getRenderingContext()
Scene.Render.EnableDispWin()
fb = context.sFrame
fe = context.eFrame
print fb,fe
print "=========================="
for i in range(fe-fb+1):
fc = fb+i
context.cFrame = fc
Window.EditMode(1)
Window.EditMode(0)
Redraw()
co = me.verts[0].co*ob.matrix
print fc,co
Scene.Render.CloseRenderWindow()
print
that prints data onto console as follows:
1 11
==========================
1 [1.000000, 1.000000, -1.000000](vector)
2 [1.099293, 1.000000, -1.000000](vector)
3 [1.384420, 1.000000, -1.000000](vector)
4 [1.826415, 1.000000, -1.000000](vector)
5 [2.382903, 1.000000, -1.000000](vector)
6 [3.000000, 1.000000, -1.000000](vector)
7 [3.617097, 1.000000, -1.000000](vector)
8 [4.173585, 1.000000, -1.000000](vector)
9 [4.615581, 1.000000, -1.000000](vector)
10 [4.900707, 1.000000, -1.000000](vector)
11 [5.000000, 1.000000, -1.000000](vector)
Here’s the .blend itself (working on 2.46 and 2.49b)
Regards,