The editor when building pages or reusable elements is exactly the same. Build you different ‘pages’ as reusable elements and just keep in mind when building the reusable element you are basically building a single page.
This is advisable for SPA because of the speed between navigating from one ‘page’ to the next ‘page’ as the experience is more in-line with what users expect from Native Apps.
Best thing about building a webapp is you have both a web version and if you elect to a wrapped ‘native’ app on the app store. Nothing wrong with getting a little extra visibility via organic search results via Google, however, if the time required to make it work properly is more than you anticipate the benefits of SEO, then no real reason for SEO.
Don’t bother with the checkbox, it does nothing. Build your ‘pages’ as reusable elements and when complete place the reusable element into a container group on a page.
If you don’t anticipate any need to have functions like sending an email with a direct link to a specific ‘page’ in the app, then using custom states to make specific ‘pages’ visible via conditionals is fine.
If you want to be able to do things like have links to specific pages and/or want some form of on page SEO using the URL then use the URL path list for making specific ‘pages’ visible via conditionals.
When setting up the container element, do not make any of them visible on page load and only use a single condition that will make it visible. Attempt to use an option set for the different conditionals that are required, and for me personally I make that option set mirror the ‘pages’. So, if I have a page for product search and another page for dashboard, I’d have in the option set values for each. Then on the container groups that contain the reusable element for those pages, I can set the content type to the option set, set the value of the datasource to the appropriate option set value, put a condition to make the group visible when (either custom state or URL path list item) value is the group’s option set value. This makes it super simple to setup a single container and then copy/paste it to change the datasource and ensure they will be visible or not when appropriate. This also helps with your workflow actions to either change the custom state value or URL path list item.
You want your users to feel like they are not being navigated to a completely different app, so make sure your color scheme, styles, font families used etc. are the same, but there is no reason to try and make each look the same from the perspective of layout, as your layout is determined by the functions and the UX/UI you want.
If you are new to Bubble and the responsive system is difficult to comprehend, I highly recommend looking into some of the free resources from Bubble as well as youtube tutorials for learning some of the basic concepts needed to get your page design exactly as you need it.