You could use vectors as well, which would be pretty much the same as what 29 suggests, except you could affect the velocities for some nice effects.
If you calculate the difference between the points, say DX#, DY# and DZ# - you can work out the distance of this vector...
D#=sqrt((DX#*DX#)+(DY#*DY#)+(DZ#*DZ#))
Then use that to normalize the vector...
DX#=DX#/D#
DY#=DY#/D#
DZ#=DZ#/D#
And then DX#,DY# and DZ# hold the velocity for your bullet, add these to the bullet position but multiply them by the desired velocity - the equivalent of how much the object should move. This method would allow you to apply gravity to the bullet, by reducing the DY# variable - would also let you deflect shots off walls, when doing a polygon line intersect check for example, between the 2 points you could work out the normal vectors and have the bullet deflect. If you recalculate the vector each frame and change the bullet velocity then you have a deadly homing missile, if you change the velocity gradually then you have winding homing missile that'll circle around targets etc like in the Worms games. There's some fun to be had with vectors!
No matter if you go for vectors or pointing the object and moving, it's worth storing that previous location and relying on intersection collision checks - it's a nice easy way to get accurate bullet collision.