How is UE4 moddable without modifying the source?

Please correct me if I’m wrong, but from what I’ve seen so far…you WILL need to use C++, and possibly modify the engine source, is that correct?

I guess at some level, I envisioned the ability to

add or modify datatables (thus adding my own items or change values)
create my own actors/graphics/items that derive from preexisting classes and behaviors
Package up JUST those changes and distribute them in some sort of a file or such.

As the game developer, I figured you would simply mark some assets as “moddable” or not, so that when I create the distribution of the editor someone modding with it wouldn’t be able to change certain base functionality or see base code/assets. All the same way a game is made now…by adding blueprints, C++ if you wish, actors, assets, etc etc.

Is it just not that simple?
As it is now…I honestly am very unclear on what is and isn’t “moddable” and what the overall approach is, do you HAVE to use C++ and modify the source, etc etc. I’ve read the plugin documentation, but I don’t see how that addresses being able to add blueprints, actors, datatable changes, etc.

And this kind of jumps out at me:
“In order to use Content in a plugin, the ‘CanContainContent’ setting within the plugin’s descriptor must be set to ‘true’. Content in plugins is a work-in-progress feature that is not recommended to use yet. More information about this will be available at a later date.”

Also, I have questions like:

Enums…are they modable, as in can you add/remove/update them via a mod, or do you need to rely on data tables values for that? I like have a dropdown list of items to choose when adding data to data tables (like resources have a set enum type), without having to reference them using a string value. I get that normally enums are static, I just would like to know if UE4 modding gets around this.

Would anyone be willing to offer up some clarity or direction on this?