My experience with Pfam is limited, but I think relevant to your question.
I work on a human pathogen which has been entirely sequenced and therefore we know quite a bit about what's in it. In particular, I'm interested one pfam group (PF02009) that groups similar proteins from this pathogen.
The problem I have with the pfam group is that it groups several distinct groups of proteins. These proteins are related, I agree, however, at the level I'm comparing them (which is in detail), I would not jump to the conclusion that these proteins share the same function.
That brings me to the following comment on your question: looking for functional annotation is very vague. What detail of functional annotation are you looking for?
- Do you want to know if these peptides belong to groups called "enzymes" or "receptors" or some kind of basic "building blocks", without any more detail?
- Do you want to know if these peptides belong to a specific class of enzymes?
- Do you want to know if these peptides belong to a specific sub-class of enzymes, going all the way down to the substrate specificity?
Another question I would have is regarding the length of your peptides. I recall one of my collaborators complaining about the fact that Pfam would not detect fragments that were too short. That was with Pfam2. I don't know how this is with Pfam3 though. So, you'll have to test this.
Depending on the answer to these questions (and many more) you may or may not want to only use Pfam. But in any case, Pfam could be a good start, if your peptides are not too short.
Another way that might be more relevant to short sequences would be to look at BLAST approaches (PSI- or PHI-BLAST in particular) to find what your peptides match to, and then look at the functional annotation of those hits (including whatever Pfam domains they may contain). I think this method would be more sensitive than the Pfam approach.