Conflicts have nothing to do with commits and everything to do with tree comparison.
If you make some changes in files A, B and C in branch 1, stash your changes and move to branch 2 where the contents of B are different, you'll get conflicts in file B. This is despite of you not making any commits whatsoever.
Merging and rebasing work in different ways. One of the most fundamental differences between merge and rebase is that a merge commit has multiple parent commits - if you'd ever wanted to go back from a merge commit, you'll have to specify the parent number.
The way the merge commit is made is that if the branch to be merged has 4 commits for example, then the merge commit is made on top of the main branch with changes equal to the sum of the changes in the 4 commits(similar to what you get when you squash commits). If you get conflicts, you get all the conflicts of all the changes at once.
Rebasing is different - changes are applied commit-by-commit. If there are conflicts in commit 2, then they have to be resolved before 3 is applied.
The ID's of the commits are also changed to indicate that these are rebased commits.