You can embed JS directly into the page. A custom code block is nothing more than a div that allows you to place whatever you want inside of it. So you can also import files and place inline scripts there.
Webflow does not allow users to place files into the directory of the project. You can work around this by uploading .txt files to the assets and grabbing it’s URL to use as an import.
Of cause you can also host files somewhere else and import those too.
The only true limitation is, when you need to work with files that can’t be cross-domain (like CSP or CORS related things) and server-side stuff.
The assets you upload to webflow will be hosted on a cdn that also is a different domain.