We have a general idea of segments implemented. A segment can either be a manual segment or a target list and is basically a selection of users based on the events/parameters they have sent.
A manual segment is based on the aggregated user_metrics and is the most advanced feature if you do not wish to use any SQL, for engage, unfortunately not including push notifications, manual segments are evaluated based on all events received so you can get an engagement response based on the mission completed earlier that session. When using manual segments within the platform for measure charts for example they will be based on the user_metrics table in Vertica that is updated daily. Some fields in the user_metrics, we call them virtual metrics such as the days since last played, are only available to the engage campaigns, not push notifications.
Then we also have target lists, target lists are originally based on the event List and refreshed daily for use with engage (push notifications excluded.) Since release 20 we also enabled target lists to be created from an advanced SQL query as shown in my example. They will be evaluated upon creation, editing and every day.