Better understanding how Liquibase execute change sets

I want to understand better how Liquibase executes change sets.

1)

a) For example I have a change log with 4 change sets and I execute updateDatabase (http://www.liquibase.org/documentation/ant/updatedatabase_ant_task.html).
Liquibase will execute 4 change sets.

b) If I run the same change log once again Liquibase not execute any set.

c) If I will add a new change set to the change log and will run the change log Liquibase will execute the new change set only.

Questions:

- How Liquibase knows what change sets to execute?
 
- How Liquibase knows what change sets already executed?


2)    How change set ID is important? Can I change it after a change log execution?

3)    How change set author is important? Can I change it after a change log execution?

4)    What happens if I will execute the rollbackDatabase (http://www.liquibase.org/documentation/ant/rollbackdatabase_ant_task.html)?
How Liquibase knows what change sets to rollback?

a) What happens if I will execute the rollback after 1 a).
Will Liquibase call to rollback element that is located in each change sets (4 rollback elements)?

b) What happens if I will execute the rollback after 1 b).
How Liquibase will know not to call to any to rollback element?

c) What happens if I will execute the rollback after 1 c).
Will Liquibase call to rollback element of only the new change set?

I have responded to this over on Stack Overflow: http://stackoverflow.com/questions/21969487/better-understanding-how-liquibase-execute-change-sets/21991851#21991851