It shows my changes there as well. Is this expected?
Yep.

The working Directory and the index/stage area are shared at repository level, so unless you commit your changes they will "continue to follow" you regardless on which branch you are in right now (See the image at the end of answer for demo).
Only once you commit them they you can switch to "clean" working directory +clean index.
This is the way git behave.
Maybe I am not clear how branching works, but my perception was that it creates duplicate of parent branch(master in this case)
Git does not create any duplications, When you create branch its simply store a reference to the commit it under a new name located under your .git/ref/heads
.
The file with the branch name simply contains the SHA-1 which was the previous HEAD
in your case.
For example: When you start to work and you suddenly realize that did not ment to work on the current branch but you wish to create new branch instead all the changes are "moving" with you to the new branch. Git store its data inside the repository. When you switch branches you set a new HEAD but the working dir + staging area stays the same.
Here is a demo - creating some files and then switching to a different branch. you can see that the files are "visible" in the new branch as well.
