TL;DR
Your friend is incorrect. It's not *tpelf with p, but tƿelf with ƿ—Wynn—which was the Old English (OE) letter to represent the phoneme /w/.
So twelve was tƿelf 1. Twenty was tƿēntiȝ 2. Two was tƿā 3.
Historical prelude to W
The letter that looks like a P is actually:
Ƿ (ƿ)
It's called Wynn which was a runic letter in Old English alphabet for the phoneme /w/. 'Wynn' literally means 'joy' and itself would've been written:
ƿynn
It's how Old English4 looked like (Beowulf):

Ƿ can be seen in the first line of 'Beowulf'. The first word is HǷÆT ('what').
The OE alphabet was based on the Latin alphabet. The Latin alphabet of the time did not have the letter ⟨w⟩, therefore OE scribes borrowed the rune ⟨ᚹ⟩ to represent the /w/. They adapted it as the Latin letter Wynn ⟨ƿ⟩.
It was still in use after the Norman Conquest, but was soon supplanted by uu (whence the name double-u) under the influence of Normans. Middle English (ME) scribes adopted a practice of writing certain letters using a sequence of a particular short downstroke of the pen/quill, called a minim. A dotless i was a single minim and looked like:
ʅ
In particular, minims were used for the following letters:
- i, one minim: ʅ
- u/v and n, two minims: ʅʅ
- m, three minims: ʅʅʅ
- w (double-u), four minims: ʅʅʅʅ
This is how minims looked like:

And the word 'minim' itself would've been written:

In Middle English period, w was written with four identical minims i.e. as two U's (ʅʅʅʅ), so they called it double-u and the name stuck. It would've been written something like:

Early printers used two V's (vv) for the double-u and was later on revamped to a single letter w.
In Present day English, it's still called double-u.
𝐍𝐎𝐓𝐄𝐒
The f changed to a v because of intervocalic fricative voicing. Old English had a phonetic property called 'intervocalic fricative voicing', whereby non-velar fricatives—/s, f, θ/—became voiced when they were flanked by two vowels, or a vowel and another voiced consonant (i.e. OE didn't contrast voiced and voiceless fricatives). So bath was bæþ and would've been pronounced [bæθ], bathe was baþian and would've been pronounced [ˈbɑðiɑn]. Wolf was wulf and would've been pronounced [wulf], wolves on the other hand was wulfas and would've been pronounced [ˈwulvɑs]. I've explained it in this answer to another question. tƿelf was followed by a suffix beginning with a vowel which changed the f to a v.
ȝ is called Yogh and it represented the /j/ ('y') sound in this instance: /ˈtweːn.tij/
The W in 'two' was pronounced in Old English. The W was lost somewhere between Old and Middle English. There was a sound change through which a /w/ was lost in the environment of a preceding [s] or [t] and a following back vowel ([ɒ ɔ o ɑ u] etc). So 'two' was tƿā and it was pronounced /twɑː/ in Early Middle English, it became /twoː/ and then it lost the /w/ and became /toː/ (the vowel /oː/ was shifted to /uː/ because of the Great Vowel Shift). I have explained the W's in 'sword', 'swore' and 'two' in this answer
Old English was much more phonetic and highly inflected than Modern English. Every word was spelt how it was pronounced, there were no silent letters in OE.
References: