Yeah, that sounds like it could be normal Wordpress behavior.
I'm not sure, but it seems that Wordpress filters out <p> and <br> tags from TinyMCE in the wp-admin area, and then re-applies them via the Wordpress 'Loop' in the front end.
Some years ago, before I learnt how to use Wordpress's wp_query to display content on the front end, I used to try to directly load the articles using my existing PHP/MySQL knowledge. So I installed a Wordpress plugin called PS Disable Autoformatting to get around Wordpress's tag-stripping behavior.
I've discovered though that the wp_query Loop isn't all that bad after all. Very convenient to use their native syntax to connect to the database, and didn't take as long as I thought to learn.