She gave me a warm smile and said hello.

Literal

She [topic-は] warmly smile-and me [to-に] greeted.

にっこり is a 擬態語 (state mimetic) for a warm, gentle, genuine smile — distinct from the colder にやり (a knowing smirk), the creepy にたにた (an unsettling grin), or the broad にこにこ (continuous smiling). Japanese carves this expressive territory finely; the choice of mimetic conveys exactly what kind of smile, and a learner will encounter dozens of these in fiction. 笑って is the te-form linking the smiling to the greeting that follows. 挨拶する ('greet, exchange greetings') takes に for the recipient.