Apparently the signiture on the procedures/functions must be exactly the same between the package and the package body. You have proc2 with the parameter a in the header and b in the body.

Code:
SQL> create or replace package pkg is
  2  procedure proc1 (a in varchar2);
  3  procedure proc2 (a in varchar2);
  4  end pkg;
  5  /

Package created.

SQL>
SQL> show errors
No errors.
SQL>
SQL> create or replace package body pkg is
  2
  3  procedure proc1 (a in varchar2) is
  4  begin
  5  dbms_output.put_line(a);
  6  end proc1;
  7
  8  procedure proc2 (a in varchar2) is
  9  begin
 10  proc1(a);
 11  end proc2;
 12
 13  end pkg;
 14  /

Package body created.

SQL>
SQL> show errors
No errors.
SQL>