The difference is that the second one is wrong!
You can either say "He is no angel" or "He is not an angel". Taken completely literally, they mean the same thing; but they're used differently. "He is not an angel" is simply a statement of fact ie. he isn't an angel because he's human. "He is no angel" is very similar, but it's more emphatic ie. He's not an angel, he's a horrible person!