what is the difference from this two?can anyone please explain this scenario ?
From syntactical point of view, the first one contains additional type name after variable name.
From functional point of view, the first one is variable declaration and assignment (usable in declarative part of PL/SQL block), the second one is only assignment (usable in executable part of PL/SQL block).
Fortunately, Oracle also contains a large set of materials about its functionality called "documentation". PL/SQL language is fully described in PL/SQL User's Guide and Reference book, which is available e.g. online on http://tahiti.oracle.com/
Please, consult it.