What's the difference between these two sentences? And which one's grammatically correct?
In the literal sense, both simply tell someone where you are. These would generally be used in slightly different contexts though.
If you are at home, and have been there for some time, and someone is asking where you are, you would respond "I'm at home".
You would use "I'm home" more to indicate that you just arrived there. Maybe to someone who was expecting you or wanted you to let them know you made it home safely.