In reply to Andre.

I think things like blog layouts have to be part of the theme, and indeed many themes do provide options for different blog layouts. And there are some plugins to help you set that kind of thing up, too. But if you try to separate it from the theme, you have a much greater likelihood of ending up with something that looks pasted on.

However, as long as your CPTs are created in a functionality plugin, that data will be perfectly safe if you change themes. (The data would actually be perfectly safe in your database regardless, but you wouldn't see it unless the new theme had the code to display it.) And you might choose to include CPT templates within said functionality plugin, though this is a little trickier than just putting them into the theme folder.