TL;DR
The rules in C and C++ are the same, there's no difference between the two.
What does the C++ Standard (n3797) say?
5.2.2p1 Function call [expr.call]
A function call is a postfix expression followed by parentheses
    containing a possible empty, comma-separated list of
    initializer-clauses which constitute the arguments to the function.
The postfix expression shall have function type or pointer to function type.
What does the C standard (n1570) say?
6.3.2.1p4 Lvalues, arrays, and function designators
A function designator is an expression that has function type. Except when it is the operand of the sizeof operator, the _Alignof operator, or the unary & operator, a function designator with type "function returning type" is converted to an expression that has type "pointer to function returning type".
6.5.2.2p1 Function calls
The expression that denotes the called function shall have type pointer to function returning void or returning a complete object type other than an array type.
Conclusion?
How the rule are expressed differs between C++ and C. In C the implicit function-to-pointer conversion always applies when calling a function, whereas C++ states that the "postfix expression" could be either a pointer, or a variable of function type.
However; your question is if the two ways of calling a function through a pointer differs between C++ and C, and the answer is: No, there's no difference between (1), (2), and (3), nor is there a difference between the two languages.
(*fptr)(123);   // (1)
fptr(123);      // (2)
(***fptr)(123); // (3)
Note: Be aware that the there's no difference between (*fptr) (...) and fptr (...) when it comes to calling a function, but that they can be vastly different in other contexts.