With the introduction of CEP Adobe has weakened the concept of "plug-in" – it formerly meant what we now characterize as "C++ plug-in" comparable in most regards to what Adobe developers can do themselves, while it since CEP also includes "plugin" wrapped up scripts.
UXP plugins are closer to CEP plugins than to C++ plugins. Where CEP uses a reworked web browser in a separate process, UXP has its own subset of a severely stripped down (or half implemented) HTML+CSS renderer, directly living in the main process. Where CEP would send messages to ExtendScript to access the DOM, UXP is directly wired to the same scripting DOM. It also has more modern JavaScript features than ExtendScript which has not seen a language update in a decade. Throw in some features borrowed from node.js, wrapped up in a security model similar to web browsers.
Towards InDesign itself, UXP is still scripting. A plugin is a zip archive of html+js+image files. If you need a notification, you may be lucky and find it also in UXP, the same way that it was available in ExtendScript. One difference - notifications are enqueued somewhere and handled in async UXP, while main execution continues on (e.g. discards the event object). Not sure whether this was solved with 19.2 .
> Can we do everything we do in a plugin developed with C++ SDK, in a UXP plugin?
Depends on what "we do" means. UXP is scripting. You can't extend features that are extensible in the SDK - add to the preferences dialog. Implement an own tool in the toolbar, with tracker, snapped. Implement an own page item with extra wobbly border, or add to existing ones. Write an own preflight service, text adornment. Add owned items to text, or add an own strand. Write your own import or export format integerated into the export subystem. Tap into observers, responders, text filters, menu filters, selection handling. Run your own selection.
> How do we achieve data persistentency?
You modify script labels. Forget about persistent interfaces, own properties added to IDML or ICML. Much easier than handling data conversion, ignore tags etc.
> Can we develop a Scriptable Plugin with UXP?
You can use standard javascript features to add properties and methods. Same as any other javascript. I have not yet tried whether these additions would become available to other scripts. UXP in general also has means to address other "plugins" - keyword "Inter Plugin Communication", but I don't know whether these have already arrived in InDesign – Photoshop is leading here. Anyway it looks more complicated than addressing a target engine in ExtendScript. And it is less integrated than when you understand ScriptInfo resources, script providers etc.