xaxis is the objects x axis vector in world space.
Maybe it's easier to understand if done in object space:
vec velWS = NewtonBodyGetVelocity (body);
matrix = NewtonBodyGetMatrix (body);
// velWS -= noise4D (matrix.pos.x, matrix.pos.y, matrix.pos.z, time); // optional small random pseudo wind
vec velLS = matrix.unrotate(velWS); // rotate velocity to object space (which does the dot products from previous post for us)
float curAirRes =
fabs(velLS.x) * precResistX +
fabs(velLS.y) * precResistY +
fabs(velLS.z) * precResistZ; // now everything as seen from bodies orientation, it get's simpler

So, if a object is moving exactly along it's local y axis, only it's precResistY-value will give its current air resistance.
Otherwise a useful approximisation will be interpolated.
As with the inertia matrix, it's important that the object is well orienatetd in the coordinate system.
For example, if you model a pencil rotated 45 degrees somehow, you'll get bad inertia and bad air resitance, leading to unnatural looking simulation behaviour.
But if you model it nicely aligned to one principial axis, both will be good.
Usually any modeller will choose good alignment automatically, so no need to worry about that.
the typical modellers 3d software views (top, left, front, perspective) give also a good example for the precomputation step:
if object is at the same scale in all views, you can do (if y is up):
precResistX = number of pixels occupied by object in left viewport (yz plane)
precResistY = number of pixels occupied by object in top viewport (zx plane)
precResistZ = number of pixels occupied by object in front viewport (xy plane)