Небуферизованный: отправка блокируется, пока кто-то не примет; приём - пока кто-то не отправит. Синхронный обмен. Буферизованный: отправка не блокируется, пока буфер не полон; приём не блокируется, пока буфер не пуст. Асинхронность в пределах размера буфера.
ch := make(chan int) // unbuffered
ch := make(chan int, 5) // buffered