There are a couple of problems here:
Firstly, don't expose your fields - use properties instead. That allows you to control how and when external objects can access your form - using fields directly locks the design of your form because the outside world could play with your fields at any time.
Secondly, when you load your form, you are overwriting any values you set before you called the ShowDialog method in the parent form.
Thirdly, you shouldn't use static variables here - you really neither want nor need them - use class instance variables instead.
How I would do it:
public class Form1
{
public string Abc
{
get { return txtTeamname.Text; }
set { txtTeamname.Text = value; }
}
}
In form 2:
DataGridViewRow row = grdTeams.Rows[e.RowIndex];
Form1 TAE = new Form1();
TAE.Abc = row.Cells[0].Value.ToString();
TAE.ShowDialog();
Finally, stop using VS default names - don't call forms Form1, Form2 - use names which describe what they do. "OpenFileDialog" is a lot more meaningful than the VS default version "Form243" would have been...