There is the httpStatic property in settings.js. Anything put into the specified folder is made available.
If you are wanting more control, you could also try UIBUILDER which has lots of features for serving both static and dynamic files and API's. It also has its own middleware and can also use a separate ExpressJS server from the main Node-RED one if you prefer.
server static css via an http-in/http-response nodes (see flow above)
use the Node-RED static directory - no idea how to do that
For two, check the settings.js file -
/** When httpAdminRoot is used to move the UI to a different root path, the
* following property can be used to identify a directory of static content
* that should be served at http://localhost:1880/.
* When httpStaticRoot is set differently to httpAdminRoot, there is no need
* to move httpAdminRoot
*/
//httpStatic: '/home/nol/node-red-static/', //single static source
/* OR multiple static sources can be created using an array of objects... */
//httpStatic: [
// {path: '/home/nol/pics/', root: "/img/"},
// {path: '/home/nol/reports/', root: "/doc/"},
//],