You don't give us the actual error, which makes it harder for us to diagnose your problem.  However, it is worth a punt: ORA-00902: invalid datatype
You haven't implemented Tom's solution exactly as he gave it.  Specifically, he created  myTableType as a SQL Type whereas you have declared it in the package specification.  This is not a trivial detail: we cannot use PL/SQL types in SQL statements.  Hence the exception.
So, remove the declration of MyTableType from the package and create it in SQL....
create or replace type mytabletype as table of varchar2(255);
/
You SELECT statement should now work.  If it doesn't please edit your question to give us the exact error message.
edit
  "I want everything to be inside the
  package. What do I have to change to
  accomplish that?"
Here is a kluge.  As you can see, PKG1 declares the PL/SQL type in the spec:
SQL> create or replace package pkg1 as
  2      TYPE myTableType IS table of varchar2 (255);
  3      function split (p_string  in    long )
  4          return          myTableType ;
  5      function get_resultset (p_tab in myTableType)
  6          return sys_refcursor;
  7      function get_resultset_for_str (p_string  in    long)
  8          return sys_refcursor;
  9  end pkg1;
 10  /
Package created.
SQL>
In the package body you will recognise SPLIT() as Tom Kyte's solution.  GET_RESULTSET() loops through a passed collection and assembles a dynamic SQL statement.   GET_RESULTSET_FOR_STR() is a helper funnction which calls both the other functions. 
SQL> create or replace package body pkg1 as
  2      function split (p_string   in     long )
  3      return          myTableType
  4      is
  5              l_string        long default p_string || ',';
  6              l_data          myTableType := myTableType();
  7              n               number;
  8          begin
  9            loop
 10                exit when l_string is null;
 11                n := instr( l_string, ',' );
 12               l_data.extend;
 13               l_data(l_data.count) :=
 14                       ltrim( rtrim( substr( l_string, 1, n-1 ) ) );
 15               l_string := substr( l_string, n+1 );
 16          end loop;
 17          return l_data;
 18      end split;
 19
 20      function get_resultset (p_tab in myTableType)
 21          return sys_refcursor
 22      is
 23          return_value sys_refcursor;
 24          stmt varchar2(32767);
 25          i pls_integer := 1;
 26      begin
 27          stmt := 'select '''||p_tab(1)||''' from dual';
 28          while i < p_tab.count()
 29          loop
 30              i := i+1;
 31              stmt := stmt||' union all select '''||p_tab(i)||''' from dual';
 32          end loop;
 33          open return_value for stmt;
 34          return return_value;
 35      end get_resultset;
 36
 37      function get_resultset_for_str (p_string  in    long)
 38          return sys_refcursor
 39      is
 40          l_tab myTableType;
 41          return_value sys_refcursor;
 42      begin
 43          l_tab := split(p_string);
 44          return_value :=  get_resultset (l_tab);
 45          return return_value;
 46      end get_resultset_for_str;
 47
 48  end pkg1;
 49  /
Package body created.
SQL>
Here is it working in SQL*Plus:
SQL> var rc refcursor
SQL> exec :rc := pkg1.get_resultset_for_str('ABC,DEF,XYZ')
PL/SQL procedure successfully completed.
SQL> print rc
'AB
---
ABC
DEF
XYZ
SQL>