You are right, the
base_link frame is created by
ekf_localization_node is an implementation of Extended Kalman Filter, in short words it calculates estimate of robot position basing on various sensors. In case of ROSbot, we are using odometry and IMU.
Detailed description of
ekf_localization_node can be found in documentation.