When you say "tengo frío" it means I'm cold. The word "tengo" has many meanings, in this case are feelings. "Tengo hambre" = Im hungry.
When you say "estoy frio" is because you are physically cold, your skin specifically.
Only Put atention because "tengo" means "to have" too.
Luck with your Spanish.