A replica is a given data store. It can be the source or destination of a sync. A participant is the place where data can be retrieved. There are different levels of participants. If you can run an application on the participant, then it is a full participant. Otherwise it is a partial participant.
There is an engine in the framework that controls the process. It works with a provider, which can be one of 3 types. These types are database, RSS, and file. Alternatively you can write your own customer provider, which sounds like a complex undertaking to me. On a final note, you can apply a filter which restricts what gets synchronized and what does not.