Ответы
public
- папка в которой лежат публично доступные файлы разого назначения например index.html, hello.html и.т.д. как правило это и есть корень сайта /
assets
- папка в которой лежат ассеты сайта (картинки, скрипты, стили, шрифты) и которая может быть легко переписана компилятором webpack и им подобным без потери важных данных.
storage
- папка куда пользователи могут например залить видеофайл или автарку но которая так или иначе учавствует в процессе работы сайта. Как правило управляеться backend скриптами.
static
- папка куда разработчик кладёт ассеты сайта (картинки, скрипты, стили, шрифты). Но которая управляеться именно разработчиком, а не создаёться автоматический при компиляции webpack'ом.
А вообще такое разделение нужно не только что-бы было удобно пользоваться посткомпиляцией, но ещё активно учавствует в правильной настройке кеширования сайта.
Папка
public
полезна в качестве обходного пути для ряда менее распространенных случаев:-Вам нужен файл с определенным именем в выходных данных сборки.
-У вас есть тысячи изображений, и вам нужно динамически ссылаться на их пути.
-Вы хотите включить небольшой скрипт вне связанного кода.
-Некоторые библиотеки могут быть несовместимы с веб-пакетом, и у вас нет другого выбора, кроме как включить его в качестве
<script>
тега.
Более подробно здесь https://create-react-app.dev/docs/using-the-public-folder
Папка assets
используется для хранения изображений, файлов css, файлов шрифтов и т. д. для вашего проекта, практически все, что не связано с кодом.