View more context

Both are correct. Changes to CSS in the theme need to be exposed to the resources folder. You can do this by updating your webpack (or whatever tooling you use) to directly write to the public/resources/themes/yourtheme/dist folder, or expose every time

Concerning images, once uploaded, they are in draft. You need to publish manually. If it is on a relation, e.g. a banner image on a Page class, the Page class needs to have a $owns property, that triggers the publication of images (and files) that the page owns

If it is in the HTML Editor that the images are uploaded, I believe you still have to manually publish the images before they render

I'm not 100% sure about the latter though, you might need to test and check that 🙂

What you could do locally, is symlink the public/resources/themes folder to your root themes folder, it would save you having to expose all the time

Ah ok so thats what the $owns property does

Quite a few results about the owns property here:

Slack Archive - Search for: private static owns | SilverStripe Users Slackarchive

$owns publishes relations when a publishRecursive is triggered. This extra method is to prevent accidental publishing of related items that should not be published by default 🙂