Hi jvolvovski
Welcome to the GreenSock forum.
If I understand your desired outcome correctly, you'd want to create the timeline outside of your onComplete function. (no need to create it each time you hit the trigger) You can put it into a paused state and then play() it when you hit the panel 2 trigger each time. Like this:
var secondPanel = new TimelineMax({paused:true});
secondPanel.to("section.panel.two p", 2, {scale:2, ease:Power3.easeOut});
secondPanel.to("section.panel.two p", 2, {color:"#fff", ease:Power3.easeOut});
function myFunction() {
secondPanel.play(0);
}
Keep in mind that it will jump back to the beginning each time you hit the trigger and call the onComplete function. You could check if it isActive() and prevent it from starting over multiple times with rapid scrolling, but this should get you close to your goal. If you want to reset it when you scroll all the way to the top, you'd have to add some custom logic and seek() back to the beginning or something along those lines.
Hopefully that helps.
Happy tweening.