A context in this … erm… context is an rmw_context_t. These are plumbed all the way out to the client libraries. So an rclcpp::Context has an rcl_context_t which has an rmw_context_t.
Related: When you call rclcpp::init(), you initialize the “global default context”. Many APIs will use the global default context when you don’t specify a context as a convenience.
A single node process would create one context, which means 1 participant for the DDS based RMW implementations.
A component container creates 1 context, meaning it also has 1 participant for the whole container.