Oi Lucas, tudo bom?
O mysqli_fetch_assoc devolve um ou uma lista de arrays associativos cada um deles representando uma linha do banco. O mysqli_fetch (ou mysqli_stmt_fetch) devolve um statement.
A diferença entre os dois é que com o statement você consegue utilizar funções para preparar a query contra sql-injection sem precisar das funções mysqli_real_scape_string.
No link acima da documentação tem alguns exemplos de uso.
Vale lembrar que o mysqli_fetch está obsoleto e possivelmente será removido nas proximas versões ficando somente o mysqli_stmt_fetch =)
Abraço!