How does `rsync` know which files are changed and which are not? Does it log its data anywhere in the file?

Because I want to do incremental backups, but first it will transfer all files.

So my main question is: if I upload the initial files via FTP but not by `rsync`.
Will `rsync` still skips those existing files or it will upload everything on the first run.