There is indeed MUCH more magic at play. The WidgetBlueprintLibrary::Create() call is what we eventually compile it down to, along with the individual setters for each exposed property. The feature works through an entirely custom blueprint node. UK2Node_CreateWidget is what does it, additionally its base-class UK2Node_ConstructObjectFromClass does a lot of the metadata scanning and generating of the custom pins. Be forewarned there’s little to no documentation on writing your own truly custom blueprint nodes, but you can do some amazing things with them
That wiki article is badly named, creating a new function and exposing it to blueprints is not creating a new node type, the nodes are all using the same CallFunction K2 Node. Nodes, like SpawnActor, and CreateWidget are examples of true custom nodes. But they’re difficult to create, and most of the time all you really want to do is just expose another function.