Assigning Different names to a text box?
As both items refer to the property my_string_prop they will show the same data. The name of the property used has to exist, if you change the name and it doesn't exist it will not draw the textbox.

To add new properties to the scene object you should add the property in your register function.

bpy.types.Scene.my_string_prop2 = bpy.props.StringProperty(name="String2")


To get a list of items you can use prop_search

row.prop_search(context.scene, "my_string_prop2", bpy.data, "objects")


That will show a list of object names to choose from.