Thanks for answers. I looked at the links above.
Are widgets plugins?
Is it possible to create new widgets (appearance > widgets) for a theme using, for example, function.php. That is:
Within WordPress: Recent Posts, Widget About Me (photo + text), Social Links (icons + links)
Outside WordPress: Instagram Photo Widget.
I wanted to do something similar, like as themes on the Themeforest (with a lot of settings and custom widgets and plugins addons). But it seems that can only change the appearance.