The logic would be the same as any "follow" mechanism. Essentially, just set the follower's acceleration in the direction of the target each frame.
Untested pseudocode (this is C, feel free to replace C idioms with C++ idioms, e.g. std::vector<Entity>):
const float ENTITY_ACC = 1.0f;
typedef struct vec2
{
float x, y;
} vec2;
typedef struct entity
{
vec2 pos;
vec2 vel;
vec2 acc;
entity *target;
} entity;
void update_entities(int count, entity *entities)
{
for (int i = 0; i < count; ++i)
{
if (entities.target != NULL)
{
float delta_x = entities.target.pos.x - entities.pos.x;
float delta_y = entities.target.pos.y - entities.pos.y;
entities.acc.x = (delta_x > 0.0f) ? ENTITY_ACC : -ENTITY_ACC;
entities.acc.y = (delta_y > 0.0f) ? ENTITY_ACC : -ENTITY_ACC;
}
// TODO: Check if entities.type == HOMING_MISSILE && are_colliding(entities, entities.target)
// If so, damage target, delete missile, etc.
}
}