Both v-model and sync can be used for two-way binding between components.

<comp v-model="bar"></comp>

expands to:

<comp :value="bar" @input="val => bar = val"></comp>
<comp :value.sync="bar"></comp>

expands to:

<comp :value="bar" @update:value="val => bar = val"></comp>

Basicly, sync was added after v-model. v-model can only be used on html input elements.