Does removing the widget from a parent means it is destroyed and frees up memory?

Thanks for answering!

Yes, providing it is not being reference by anything else. You can store the reference to a widget in a variable of its type, setting this variable to null and removing the widget from its parent will kick in the Garbage Collector and the widget will be automagically removed from memory. This happens a bit faster now in 4.17 according to the patch notes.