If all you need is the smaller text to move to the right if the name gets longer, then parent it to the first text, and give the position this expression:
margin=60;
sr=parent.sourceRectAtTime();
[sr.left+sr.width+margin,0];
As for the shape layer:
add a shape layer, give it a path, give the path this expression:
margin = 60;
t1=thisComp.layer("John");
s1=t1.sourceRectAtTime();
t2=thisComp.layer("• This text layer adapts");
s2=t2.sourceRectAtTime();
l = t1.toComp([s1.left, s1.top])[0] - margin;
r = t2.toComp([s2.left+s2.width, s1.top])[0] + margin;
t = Math.min(t1.toComp([s1.left, s1.top])[1], t2.toComp([s2.left+s2.width, s2.top])[1]) - margin;
b = Math.max(t1.toComp([s1.left, s1.top+s1.height])[1], t2.toComp([s2.left+s2.width, s2.top+s2.height])[1]) + margin;
createPath( [fromComp([l,t]), fromComp([r,t]), fromComp([r,b]), fromComp([l,b])], [],[], true);
add a Fill and a Round Corners modifier.