Here is my interpretation of your problem. I have problems with pointers myself,
but this way of doing what you want is what I always do. (barring typos)
This code is untested, but I have used this concept many times before.
MYSTRUCT2* hereItGoes; //not sure if your declare of hereItGoes is valid
function MyCoolFunction()
{
hereItGoes = (MYSTRUCT2*)malloc(sizeof(MYSTRUCT2)); //I always use malloc cause I can never be sure.
hereItGoes.aVariable = (MYSTRUCT1*)malloc((int)sizeof(MYSTRUCT)*iNeedItSeveralTimes); //MAKE SURE the (int) is inside the malloc or it will fail
//this line may also need to be "hereItGoes->aVariable = ..." but not sure
int index;
for(index = 0; index <= iNeedItSeveralTimes; index++)
(hereItGoes->aVariable)[index] = aValue; //you have to use the "->" in place of "." when dealing with strunct inside structs
// and the PLACEMENT of the brackets around "(hereItGoes->aVariable)[index]" is VERY important
}