The = ^ symbol combination is short for "defines a pointer to", so
means "the type deux defines a pointer to deuxx".
BTW a good convention is to name all pointer types with an initial P. It is not obligatory, but it makes it clear that (say PDeux) is a pointer and not an integer or a record etc.
Using this naming convention you might have named your pointer type PDeux, and your hello pointer pHello.
When ^ is placed at the end of a pointer identifier it has a different meaning: "dereference this pointer". If pHello points to some dynamically allocated structure in memory (you created yours with a call to New() ), then pHello^ means the structure itself, not its memory address.
Objects (deuxx = object ... end;) are not the best place to start when learning OOP today. They are not deprecated, and have their limited uses. However, learning about classes (TDeux = class ... end;) will be far more fruitful for you, and you will find many, many more examples of good Pascal code to learn from that use classes rather than objects.
Using a class rather than an object your code (removing redundant bits, and improving the naming) looks like this:
program ex;
type
TDeux = class
public
procedure Multi(c, d: integer);
end;
procedure TDeux.Multi(c, d: integer);
begin
WriteLn('c*d = ',c*d);
end;
var
hello: TDeux;
begin
hello:=TDeux.Create;
hello.Multi(7, 5);
hello.Free;
end.