I think this is actually one of the more difficult things about programming.
Looking at your example you write comments in a "descriptive" style, as if your comments are instructions on what should be written below, this is a bad habit picked up from tutorials where these types of comments are used to re-enforce the meanings of commands.
rem Turn manual sync on
Sync on
rem Set sync rate to 60 to control fps
Sync Rate 60
rem Close the Main Loop
Loop
There's no need to comment individual commands. If the reader doesn't know the commands they can read their manual.
You should not describe what you are doing but what it means for the program.
`Create boxes
Make Object Box num,CubesObjects(num,4),CubesObjects(num,5),CubesObjects(num,6)
`Position boxes
Position Object num,CubesObjects(num,1),CubesObjects(num,2),CubesObjects(num,3)
`Rotate boxes
Rotate Object num,CubesObjects(num,7),CubesObjects(num,8),CubesObjects(num,9)
What are these boxes for? Why are you placing them there? Why are you rotating them? If these are not particularly significant actions then they don't need to be annotated.
rem Get mouse movement
MMX#=Wrapvalue(MMX#+MouseMoveX())
MMY#=Wrapvalue(MMY#+MouseMoveY())
This comment is fine because it isn't immediately obvious why you are storing these values. Note that you naturally explained the meaning of these variables rather than describing the process of assigning them. That's what your other comments should be like.
Now look at how we can apply this thinking to conditional loops
rem Create objects
for num=1 to 20
becomes
rem invariant: we've created num-1 objects so far.
for num=1 to 20
The invariant is a statement that is always true at a particular point in the loop, usually placed at the start or at the end of a conditional loop, these can be very useful for quickly understanding the workings of a loop.
The last one is just about neatness:
rem Create array for objects properties
`1=x pos, 2=y pos, 3=z pos, 4=x size, 5=y size, 6=z size, 7=x rot, 8=y rot, 9=z rot
This looks a bit messy to me and the lack of spaces around the equals signs don't help clarity. I'd suggest doing something similar to what weepingcorpse suggested for something like this, but it does make me wonder whether you couldn't create separate arrays or use constants as labels instead of having to deal with all these cryptic numbers.
So to reiterate, my one piece of advice would be: don't DESCRIBE what you're doing, EXPLAIN what you're doing. If that makes sense.
Shh... you're pretty.