Thanks.

Well, you told me many things I already knew, but one thing in special was quite like a BOOM in my head: arctangent can help pointing one object to another.
I went straight to DBPro and started traying and experimenting until I FOUND SOMETHING EVEN BETTER: ATANFULL(!
This is great because doesn't need any calculation. It returns the correct angle and you just need to rotate the sprite or object with the angle it returned.
I made this in a hurry.
This code requires Matrix1Utils to be compiled.
What it does: it create 2 spaceships. With arrow keys you control spaceship 1, and spaceship 2 (using ATANFULL and a timer) tries to follow it. I added a timer to ensure the following pattern isn't impossible to avoid (without it, the ship 2, after some time, simply catches spaceship 1 and overlaps it.
IMPORTANT:there are a lot of functions unused in this demo, please ignore them - or make them a try,if you please - but the goal of this snippet is just to demonstrate that what you said was very useful.
set display mode 1366,768,32
maximize window
set window layout 0,0,0
indexfonts()
do
cls
c1 = rgb(rnd(254)+1,rnd(254)+1,rnd(254)+1)
c2 = rgb(rnd(254)+1,rnd(254)+1,rnd(254)+1)
c3 = rgb(rnd(254)+1,rnd(254)+1,rnd(254)+1)
c4 = rgb(rnd(254)+1,rnd(254)+1,rnd(254)+1)
makeship(1,16,16,c1,c2)
makeship(2,16,16,c3,c4)
x1 = 100
x2 = 1266
y1 = 400
y2 = 400
makesprite(1,x1,y1,1,64,64,32,32)
makesprite(2,x2,y2,2,64,64,32,32)
f = 0
repeat
displace(1)
displace(2)
x1 = sprite x(1)
y1 = sprite y(1)
x2 = sprite x(2)
y2 = sprite y(2)
a = atanfull(x1-x2,y2-y1)
if f mod 240 = 0 then rotate sprite 2,a
move sprite 2,2
if upkey() = 1 then move sprite 1,2
rotate sprite 1,wrapvalue(sprite angle(1) - leftkey() + rightkey())
inc f
until spacekey() = 1
LOOP
function makeshot(n,w,h,c1,c2)
w2= ceil((w-1)/2)
create bitmap n,w,h
lock pixels
for x = 0 to w2 step rnd(2)+1
for y = 0 to h-1 step rnd(2)+1
if rnd(1) = 0 then c = c1 else c = c2
dot w2+x,y,c
dot w2-x,y,c
next
NEXT
unlock pixels
if image exist(n) = 1 then delete image n
get image n,0,0,w,h,1
delete bitmap n
endfunction
function makeship(n,w,h,c1,c2)
w2= ceil((w-1)/2)
create bitmap n,w,h
lock pixels
sz = RND((W2*H)-(w2+h))+(w2+h)
x = 0
y = rnd(h-1)
up = y : dn = y
d = rnd(1)
cv = rnd(4)+1
repeat
if rnd(cv) = 0 then d = wrap(d + 1,0,1)
if d = 0 then c = c1 else c = c2
dot w2+x,y,c
dot w2-x,y,c
x = clamp(x + rnd(1) - rnd(1),0,w2)
y = clamp(y + rnd(1) - rnd(1),0,h-1)
if x > side then side = x
if y < up then up = y
if y > dn then dn = y
dec sz,1
until sz = 0
unlock pixels
if image exist(n) = 1 then delete image n
get image n,w2-side,up,w2+side+1,dn+1,1
delete bitmap n
ENDFUNCTION
function makeplanet(n,s,c1,c2)
create bitmap n,s,s
cls rgb(255,255,255)
fill circle int(s/2),int(s/2),int(s/2),rgb(0,0,0)
if image exist(n) = 1 then delete image n
get image n,0,0,s,s,1
if sprite exist(n) = 1 then delete sprite n
sprite n,0,0,n
set sprite n,1,1
set sprite diffuse n,0,0,0
sz = s^2
is = rnd(15)+5
cls c1
lock pixels
for i = 1 to is
x = rnd(s) : y = rnd(s)
isz = INT((sz/is)/(RND(4)+1))
repeat
dot x,y,c2
x = wrap(x + rnd(1) - rnd(1),0,s)
y = wrap(y + rnd(1) - rnd(1),0,s)
dec isz,1
UNTIL isz = 0
next
unlock pixels
BLUR BITMAP N,RND(6)
paste sprite n,0,0
delete sprite n
delete image n
get image n,0,0,s,s,1
delete bitmap n
ENDFUNCTION
function d4(x,y,w,h,c)
dot x-w,y-h,c
dot x+w,y-h,c
dot x-w,y+h,c
dot x+w,y+h,c
ENDFUNCTION
function boom(n,w,h,c)
create bitmap n,w,h
lock pixels
sz = (w*h)/2
x = ceil((w-1)/2)
y = ceil((h-1)/2)
dw = rnd(x-1)
dh = rnd(y-1)
repeat
d4(x,y,dw,dh,c)
dw = wrap(dw + rnd(1) - rnd(1),0,x-1)
dh = wrap(dh + rnd(1) - rnd(1),0,y-1)
dec sz,1
until sz = 0
unlock pixels
if image exist(n) = 1 then delete image n
get image n,0,0,w,h,1
delete bitmap n
ENDFUNCTION
function txt$(n,t$,f$,size,color)
set text size size
set text font f$
ink color
w = text width(t$)
h = text height(t$)
create bitmap n,w,h
text 0,0,t$
if image exist(n) = 1 then delete image n
get image n,0,0,w,h,1
delete bitmap n
ENDFUNCTION
function indexfonts()
global fq as integer
perform checklist for fonts
fq = checklist quantity()
dim font(fq) as string
for f = 1 to fq
font(f) = checklist string$(f)
NEXT
ENDFUNCTION
function randomfont()
f = rnd(fq-1)+1
f$ = font(f)
ENDFUNCTION f$
function makesprite(n,x,y,img,w,h,ox,oy)
if sprite exist(n) = 1 then delete sprite n
sprite n,x,y,img
set sprite n,1,1
size sprite n,w,h
offset sprite n,ox,oy
ENDFUNCTION
function displace(n)
l = 0
r = screen width()
u = 0
d = screen height()
x = sprite x(n)
y = sprite y(n)
if x < l or x > r or y < u or y > d
if x < l then x = r
if x > r then x = l
if y < u then y = d
if y > d then y = u
sprite n,x,y,sprite image(n)
endif
ENDFUNCTION
[size=+2]Forever and one[/size]