Also a rebuild command includes a clean of the project, since build command does not ?
You have identified the fundamental difference.
Build will look at the files that have been modified since the last successful compile and link and just compile those and then link the result.
Rebuild will recompile everything.
Strictly speaking it might be different to a clean (which removes the intermediate and output files) and build and just recompile everything, but the result should be the same. However, there may be cases that fail (see Femaref’s comment).